1、南京信息工程大学 实验(实习)报告实验(实习)名称 有序表的合并(顺序存储) 实验(实习)日期 2014.9.30 得分 指导教师 吴婷婷 系 理学系专业 软件工程 年级 2 班次 13 软工 1 班 姓名 彭路 学号 20131344031 一、实验目的用顺序表(SqList)类型实现书上算法 2.1 和 2.2,了解线性表及在计算机中的两类不同的存储结构;熟练掌握线性表的查找、插入和删除等算法并灵活运用这些算法。二、实验准备1.windows7 计算机或以上机型2.Dev-Cpp三、实验内容用 C 语言编写程序,其中 Lb=2,4,6,8,10 La=1,2,3,4,5, 算法 2.1 执
2、行后,得到的 new La = 1,2,3,4,5,6,8,10 修改 Lb=2,6,8,9,11,15,20,并利用新生成的 La,得到合并后的 Lc,Lc= 1,2,2,3,4,5,6,6,8,8,9,10,11,15,20四、程序#include #include #include # define TRUE 1# define ERROR 0# define OK 1# define OVERFLOW -2# define FALSE 0# define LIST_INIT_SIZE 10# define LISTINCREMENT 5#define MAXSIZE 100typede
3、f structint dataMAXSIZE; /*存放线性表的数组*/int length; /* length 是顺序表的长度*/List;void InitList(Listvoid ClearList(Listvoid ListInsert(Listif(L.length=MAXSIZE)printf(“表满,不能插入n“);else if(iL.length+1)printf(“插入位置不正确n“);else for(j=L.length-1;j=i-1;j-) /*元素依次向后移动*/L.dataj+1=L.dataj;L.datai-1=x; /*插入 x*/L.length+
4、; /*表长增 1*/void ListTraverse(List L) int i;if(L.length=0i-;k-;else La.datak=Lb.dataj;j-;k-;while(i0) Lc.datak=La.datai;i-;k-;/*La 没有结束*/while(j0) Lc.datak=Lb.dataj;j-;k-; /*Lb 没有结束*/La.length=m+n; /*合并后的表长*/int main()List La,Lb,Lc;int j,b7=2,6,8,9,11,15,20;InitList(La); / 创建空表 La。如不成功,则会退出程序的运行for(j
5、=1;j=5;j+) / 在表 La 中插入 5 个元素,依次为 1、2、3、4、5ListInsert(La,j,j);printf(“La= “);ListTraverse(La); / 输出表 La 的内容InitList(Lb); / 创建空表 Lbfor(j=1;j=5;j+) / 在表 Lb 中插入 5 个元素,依次为 2、4、6、8、10ListInsert(Lb,j,2*j);printf(“Lb= “);ListTraverse(Lb); / 输出表 Lb 的内容Union(La,Lb); / 调用算法 2.1,将 Lb 中满足条件的元素插入 La(不改变 Lb)printf
6、(“new La= “);ListTraverse(La); / 输出新表 La 的内容ClearList(Lb); / 清空表 Lbfor(j=1;j=7;j+) / 在表 Lb 中重新依次插入数组 b的 7 个元素ListInsert(Lb,j,bj-1);printf(“Lb= “);ListTraverse(Lb); / 输出表 Lb 的内容MergeList(La,Lb,Lc); / 调用算法 2.2,生成新表 Lc(不改变表 La 和表 Lb)printf(“Lc= “);ListTraverse(Lc); / 输出表 Lc 的内容return 0;【运行结果】五、实验总结线性表是软件设计中最基础的数据结构。用顺序方法存储的线性表称为顺序表,当线性表中很少做插入和删除操作,线性表的长度变化不大,易于事先确定其大小时,可以采用顺序表作为存储结构。在实际应用中应该考虑以下因素:()应有利于运算的实现;()应有利于数据的特性;()应有利于软件环境。