基础数据结构-线性表-顺序表的合并操作

因为最近笔记本B面裂了准备去修,复杂些的会优先加上注释,所以在家先把代码和题目贴上来以后补文字,有疑问可以在下面留言。

顺序表的合并操作

题目描述
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)

已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序
输入
第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等

第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等
输出
顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开

第1行输出创建后的顺序表内容

样例输入
3 11 33 55
5 22 44 66 88 99

样例输出
8 11 22 33 44 55 66 88 99

#include<iostream>
using namespace std;

#define ok 0
#define error -1

class SeqList{
private:
    int *list;
    int maxsize;
    int size;
public:
    SeqList();
    ~SeqList();
    int list_size();
    int list_insert(int i,int item);
    int list_del(int i);
    int list_get(int i);
    void list_display();
    int get(int i);        //新建get函数
};
SeqList::SeqList()
{
    maxsize  = 1000;
    size = 0;
    list = new int[maxsize];
}
SeqList::~SeqList()
{
    delete []list;
}

int SeqList::list_size()
{
    return size;
}

void SeqList::list_display()
{
    int i;
    cout << size << ' ';
    for(i=0;i<size-1;i++)
        cout << list[i] << ' ';
    cout << list[size-1] << ' ' << endl;
}

int SeqList::list_insert(int i,int item)    //优化了一下,在主函数插入时加了1
{
    if(i<1||i>size+1)
        return error;
    else{
        int n;
        for(n=size;n>=i;n--)
            list[n] = list[n-1];
        list[i-1] = item;
        size++;
        return ok;
    }
}

int SeqList::list_get(int i)
{
    if (i<1||i>size)
        return error;
    else
    {
        cout << list[i-1] << endl;
        return ok;
    }
}
    
int SeqList::get(int i){
    return list[i];
}

int main()
{
    int i,j,size,item;
    SeqList LA,LB;    //思路:将要合并的两组数据放入两个线性表中,上下匹配,遇到较大的数据放后,最终合并到B
    cin >> size;
    for(i=1;i<=size;i++)
    {
        cin >> item;
        LA.list_insert(i,item);
    }
    cin >> size;
    for(i=1;i<=size;i++)
    {
        cin >> item;
        LB.list_insert(i,item);
    }
    for(i=0;i<=LA.list_size()-1;i++)
    {
        for(j=0;j<=LB.list_size()-1;j++)
        {
            if(LA.get(i)<=LB.get(j))
            {
                LB.list_insert(j+1,LA.get(i));
                break;
            }
            if(j==LB.list_size()-1)
            {
                LB.list_insert(j+2,LA.get(i));
                break;
            }
        }
    }
    LB.list_display();
    return 0;
}
原文地址:https://www.cnblogs.com/nathaneko/p/6491086.html