用c++实现两个有序(从小到大)顺序表合并成为一个顺序表,合并后的结果放在第一个顺序表中(假设这两个有序顺序表中没有相同的元素)。求帮忙。。。。
#include<iostream.h>const int MaxSize=100;
class SeqList
{
public:
SeqList(int a[], int n); //有参构造函数
int Length();
void Insert( int b[],int length2); //在线性表中第i个位置插入值为x的元素
void PrintList(); //遍历线性表,按序号依次输出各元素
private:
int data[MaxSize]; //存放数据元素的数组
int length; //线性表的长度
};
SeqList::SeqList(int a[], int n)
{
int i;
if (n>MaxSize) throw "参数非法";
for (i=0; i<n; i++)
data[i]=a[i];
length=n;
}
int SeqList::Length()
{
return length;
}
void SeqList::Insert( int b[],int length2)
{
int j,h;
for(int i=0;i<length2;i++)
for (j=length-1; j>0; j--)
for(h=0;h<i;h++)
if(b[i]<data[j])
{
data[j+1]=data[j]; //注意第j个元素存在数组下标为j-1处
data[j]=b[i];
}
length++;
}
void SeqList::PrintList()
{
for(int i=0;i<length;i++)
cout<<data[i]<<endl;
}
void main()
{
int a[5]={1,2,5,6,8};
int b[3]={0,7,9};
SeqList s(a,5);
SeqList c(b,3);
cout<<"第1组"<<endl;
s.PrintList();
cout<<"第2组"<<endl;
c.PrintList ();
cout<<"第3组"<<endl;
int x=c.Length ();
s.Insert (b,x);
s.PrintList();
}
运行结果:
将顺序表插入到另一个顺序表中,只循环一次,就停止了,不知道怎样吧顺序表中的数据全部查到另一个中,且是顺序表是从小到大的顺序,弄的我头好大哦,希望高手帮帮忙。。