题目描述
建立顺序表的类,属性包括:数组、实际长度、最大长度(设定为1000)
已知两个递增序列,把两个序列的数据合并到顺序表中,并使得顺序表的数据递增互不相等
输入
第1行先输入n表示有n个数据,接着输入n个数据,表示第1个序列,要求数据递增互不等
第2行先输入m表示有m个数据,接着输入m个数据,表示第2个序列,要求数据递增互不等
输出
顺序表内容包括顺序表的实际长度和数据,数据之间用空格隔开
第1行输出创建后的顺序表内容
/*
顺序表--合并操作
*/
# include<iostream>
using namespace std;
class SeqList
{
private:
int *list;
int size;
int maxsize;
public:
SeqList();
~SeqList();
int list_size();
int list_insert(int item);
void list_display();
void list_hebing(int n,int m,int item1[],int item2[]);
};
SeqList::SeqList()
{
size = 0;
maxsize = 1000;
list = new int[maxsize];
}
SeqList::~SeqList()
{
delete []list;
}
int SeqList::list_size()
{
return size;
}
int SeqList::list_insert(int item)
{
// 寻找插入位置
int k;
for (k = 0;k < size;k ++)
{
if(item < list[k])
{
break;
}
else if(item == list[k])
{
return 0;
}
}
int i = k + 1;
int j;
for (j = size;j >= i;j --)
{
list[j] = list[j - 1];
}
list[j] = item;
size ++;
return 0;
}
void SeqList::list_display()
{
cout << size << ' ';
for (int i = 0;i < size;i ++)
{
cout << list[i] << ' ';
}
cout << endl;
}
void SeqList::list_hebing(int n,int m,int item1[],int item2[])
{
for (int i = 0;i < n;i ++)
{
list[i] = item1[i];
}
size = n;
for (int i = 0;i< m;i ++)
{
list_insert(item2[i]);
}
}
int main()
{
int n;
cin >> n;
int item1[n];
for (int i = 0;i < n;i ++)
{
cin >> item1[i];
}
int m;
cin >> m;
int item2[m];
for(int i = 0;i < m;i ++)
{
cin >> item2[i];
}
SeqList mylist;
mylist.list_hebing(n,m,item1,item2);
mylist.list_display();
return 0;
}