【id:19】【25分】C. DS顺序表–合并操作
题目描述
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)
已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增有序
输入
第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等
第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等
输出
顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开
第1行输出创建后的顺序表内容
样例查看模式
正常显示
查看格式
输入样例1 <-复制
3 11 33 55
5 22 44 66 88 99
输出样例1
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(){
maxSize=1000;
size=0;
list =new int[maxSize];
}
~SeqList(){
delete []list;
}
int list_size(){
return size;
}
int isEmpty(){
return size==0?1:0;
}
int list_front(){
return list[0];
}
void list_pop(){
for(int j=0;j<size;j++){
list[j]=list[j+1];
}
size--;
}
int list_push(int item){
list[size++]=item;
return ok;
}
void list_display(){
cout<<size<<" ";
for(int i=0;i<size;i++)
{
cout<<list[i]<<" ";
}cout<<endl;
}
};
int main(){
int l1,l2,item;
cin>>l1;
SeqList a;
for(int i=0;i<l1;i++){
cin>>item;
a.list_push(item);
}
SeqList b;
cin>>l2;
for(int i=0;i<l2;i++){
cin>>item;
b.list_push(item);
}
SeqList c;
while(c.list_size()!=l1+l2){
if(a.isEmpty()){
c.list_push(b.list_front());
b.list_pop();
}
else if(b.isEmpty()){
c.list_push(a.list_front());
a.list_pop();
}
else if(a.list_front()<=b.list_front()){
c.list_push(a.list_front());
a.list_pop();
}
else{
c.list_push(b.list_front());
b.list_pop();
}
}
c.list_display();
}