有序顺序表的合并

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验题目:有序顺序表的合并

一、实验目的

掌握顺序表的基本操作

理解并分析算法的时间复杂度

二、实验内容

实现两个有序(从小到大)顺序表合并成为一个有序顺序表,合并后的结果放在第一个顺序表中(假设这两个有序顺序表中没有相同的元素)。

三、设计与编码

1、基本思想

大体上的方法与“有序顺序表的插入”方法类似。创建两个数组,实现两个有序顺序表。需定义第二个表长length2,逐个将第二个顺序表中的数据与第一个数据表中的数据对比大小,并按大小顺序排列、合并,生成第三个表。最后输出。

2、编码

#include

using namespace std;

const int MaxSize=200;

class SeqList

{ public:

SeqList(int a[],int n);

int Length();

void Insert(int b[],int length2);

void PrintList();

private:

int data[MaxSize];

int length;

};

SeqList::SeqList(int a[],int n)

{int i;

if(n>MaxSize)throw"参数非法";

for(i=0;i

data[i]=a[i];

length=n;

}

int SeqList::Length()

{

return length;

}

void SeqList::Insert(int b[],int length2)

{ int j,h,i=0;

for( j=0;j

{if(b[i]

{ for(h=length;h!=j;--h)

data[h]=data[h-1];

data[j]=b[i];

++length;

++i;

}

else if(j==length-1&&b[i]>data[length-1]) {

data[length]=b[i];

length++;

++i;

}

}

}

void SeqList::PrintList()

{for(int i=0;i

cout<

cout<

}

void main()

{

int a[6]={1,5,8,10,15,21};

int b[3]={6,13,18};

SeqList s(a,6);

SeqList c(b,3);

cout<<"合并前的顺序表A"<

s.PrintList();

cout<<"合并前的顺序表B"<

c.PrintList();

cout<<"合并后的顺序表C"<

int x=c.Length();

s.Insert(b,x);

s.PrintList();

}

四、调试与运行

1、调试时遇到的主要问题及解决

括号、花括号未正确配对,出现混乱导致编译出错;

第一次运行成功,由于数组输出语句为cout<

经调整数组输出语句为cout<

2、运行结果(输入及输出,可以截取运行窗体的界面)

五、实验心得

写程序代码时务必认真。

相关文档
最新文档