作业1:顺序表的操作

#include <iostream>
#include <cstdio>
#include <cstdlib>
using namespace std;

class Seqlist{
public:
    int last;
    int sz;
    int *data;
    Seqlist(int _sz=0){ ///构造函数
        data = new int[_sz];
        last = -1;
        sz = _sz;
    }
    void Insert(int i, int value){  ///插入
        *(data+i) = value;
        last = max(last, i);
    }
    void Output(){   ///输出
        int i;
        for(i=0; i<=this->last; ++i){
            cout<< (*(data+i))<< endl;
        }
    }
    void Sort(){     ///排序
        for(int i=0; i<=last; ++i){
            int k=i;
            for(int j=i+1; j<=last; ++j){
                if(*(data+k) > *(data+j)){
                    int temp = j;
                    j=k;
                    k=temp;
                }
            }
            int temp = *(data+k);
            *(data+k) = *(data+i);
            *(data+i) = temp;
        }
    }
};

int main(){
    int n,m,sum,cnt=0,x;
    cin>> n;
    Seqlist seq1(n);
    for(int i=0; i<n; ++i){
        cin>> x;
        seq1.Insert(i, x);
    }
    cin>> m;
    Seqlist seq2(m);
    for(int i=0; i<m; ++i){
        cin>> x;
        seq2.Insert(i, x);
    }
    sum = n + m;
    Seqlist seq(sum);
    int i=0,j=0;
    seq1.Sort();
    seq2.Sort();
    while(i<n && j<m){
        if(*(seq1.data+i) == *(seq2.data+j)){
            seq.Insert(cnt, *(seq1.data+i));
            ++i;
            ++j;
        }
        else if(*(seq1.data+i) < *(seq2.data+j)){
            seq.Insert(cnt, *(seq1.data+i));
            ++i;
        }
        else{
            seq.Insert(cnt, *(seq2.data+j));
            ++j;
        }
        ++cnt;
    }
    while(i<n){
        seq.Insert(cnt, *(seq1.data+i));
        ++i;
        ++cnt;
    }
    while(j<m){
        seq.Insert(cnt, *(seq2.data+j));
        ++j;
        ++cnt;
    }
    seq.Output();
    return 0;
}
时间: 2025-01-02 15:43:58

作业1:顺序表的操作的相关文章

顺序表 其他操作

1 实验2 顺序表其它操作 2 实验目的 3 1.进一步掌握在线性表的顺序存储结构上的一些其它操作. 4 实验内容 5 程序1 6 已知一个线性表,用另辟空间和利用原表两种方法把线性表逆置. 7 设计要求:在程序中构造三个子程序分别为 8 SeqList reverse(SeqList A) /*顺序表的就地逆置 */ 9 void ListTraverse(SeqList L) /* 遍历顺序表 */ 10 SeqList create(int n) /* 建立顺序表 */ 11 12 程序2

07、顺序表的操作

顺序表的操作 一.从顺序表中删除具有最小值的元素 /* 时间:2017年7月2日10:49:39 功能:从顺序表中删除具有最小值的元素并将最后元素放于被删除元素的位置,由函数返回被删元素的值 */ #include "stdio.h" #include "string.h" #include"stdlib.h" #define maxSize 15 //显式地定义表的长度 typedef int DataType; //定义表元素的数据类型 ty

Java 3:顺序表的操作

顺序表常见操作有插入.删除.查找.修改.一.插入:1.插入有头插.尾插.任意位置插入.在插入时要注意下标的取值在顺序表长度范围内.所以最好在插入之前进行扩容操作.2.在头插时要注意先将原数组的元素从后往前依次向后移动.因为如果从前往后开始移动的话,会造成后一个元素被前一个元素覆盖,而丢失数据且造成重复.arr[i+1]=arr[i],注意此处i的意思是要移动的元素的下标.3.任意位置插入与头插类似,从后往前(要插入的位置元素下标)依次向后移动,再将数据插入二.删除1.删除有头删.尾删.任意位置删

数据结构顺序表的操作全集(创建,遍历,插入,删除,排序等等)

#include"stdio.h" #include"stdlib.h" #include"malloc.h" #define list_size 100 typedef struct Node { int data[list_size]; int len; }NODE,* PNODE; void creat_list(PNODE L) { int i; int val; int len; /* PNODE L=(PNODE)malloc(siz

一个简单的顺序表基础操作示例

最近学计算机软件基础,学到了线性表.下面就将线性表中最简单的顺序表的一个简单示例贴出,方便大家探讨.(以及后面对函数传参的一个小分析,其实这才是重点) 1 ////需求分析 2 //1.线性表递增有序,删除重复元素 3 //2.线性表逆置 4 //3.寻求最大值 5 6 #include<stdio.h> 7 8 typedef int ElementType; 9 typedef struct _struct 10 { 11 ElementType SequenceList[100]; 12

顺序表一系列操作

在顺序表中,每个结点的存储地址是该结点在表中的位置的线性函数,是一种随机存取结构.顺序表是用向量实现的线性表,向量的下标可以看作结点的相对地址.因此顺序表的的特点是逻辑上相邻的结点其物理位置亦相邻.下面对顺序表进行头插.头删.尾插.尾删.指定位置插入数据.查找数据位置.删除某一个数.折半查找.冒泡排序和选择排序等操作并进行测试. 头函数: #define _CRT_SECURE_NO_WARNINGS 1 #include<stdio.h> #include<stdlib.h> #

数据结构——顺序表及其操作

今天总结了一下顺序表的一些操作实现,算是这个本该上而没有上的体育课的一些小收获吧! BTW,青轴用起来是爽,但时间长了感觉自己的手指痛的不行呀/TOT/~~ 1 #include<iostream> 2 3 using namespace std; 4 5 #define MAXSIZE 100 //最大长度 6 #define OK 1 7 #define ERROR -1 8 9 10 //类型重命名 11 typedef int Elemtype; 12 typedef int Stat

c数据结构 顺序表和链表 相关操作

编译器:vs2013 内容: #include "stdafx.h"#include<stdio.h>#include<malloc.h>#include<stdlib.h> #define LINK_INIT_SIZE 100#define LISTINCREAMENT 10#define ElemType int#define OVERFLOW -2#define OK 1#define ERROR 0 typedef int status; /

6-2 顺序表操作集

6-2 顺序表操作集(20 分) 本题要求实现顺序表的操作集. 函数接口定义: List MakeEmpty(); Position Find( List L, ElementType X ); bool Insert( List L, ElementType X, Position P ); bool Delete( List L, Position P ); 其中List结构定义如下: typedef int Position; typedef struct LNode *List; str