有序顺序表的合并
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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、运行结果(输入及输出,可以截取运行窗体的界面) 五、实验心得 写程序代码时务必认真。