数据结构--实验报告_线性表的基本操作备用

上传人:飞*** 文档编号:42995801 上传时间:2018-06-04 格式:DOC 页数:16 大小:1.15MB
返回 下载 相关 举报
数据结构--实验报告_线性表的基本操作备用_第1页
第1页 / 共16页
数据结构--实验报告_线性表的基本操作备用_第2页
第2页 / 共16页
数据结构--实验报告_线性表的基本操作备用_第3页
第3页 / 共16页
数据结构--实验报告_线性表的基本操作备用_第4页
第4页 / 共16页
数据结构--实验报告_线性表的基本操作备用_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《数据结构--实验报告_线性表的基本操作备用》由会员分享,可在线阅读,更多相关《数据结构--实验报告_线性表的基本操作备用(16页珍藏版)》请在金锄头文库上搜索。

1、实验目的 实验内容和要求 源代码 顺序表的代码 单链表的代码 测试结果 顺序表的测试结果 单链表的测试结果 五、心得体会 实验一 线性表的基本操作及其应用 一、实验目的 1、帮助读者复习 C+语言程序设计中的知识。 2、熟悉线性表的逻辑结构。 3、熟悉线性表的基本运算在两种存储结构上的实现。 4、掌握顺序表的存储结构形式及其描述和基本运算的实现。 5、熟练掌握动态链表结构及有关算法的设计 二、实验内容 题目一:顺序表的基本操作 问题描述 实现顺序表的建立、求长度,取元素、修改元素、插入、删除等顺序表的基本操作。 基本要求 (1)依次从键盘读入数据,建立带头结点的顺序表;(2)输出顺序表中的数据

2、元素 (3)求顺序表的长度; (4)根据指定条件能够取元素和修改元素; (5)实现在指定位置插入和删除元素的功能。 (6)根据算法,将两个有序的顺序表合并成一个有序顺序表。 测试数据 由学生任意指定。 题目二:单链表的基本操作 问题描述 实现带头结点的单链表的建立、求长度,取元素、修改元素、插入、删除等单链表的基本 操作。 基本要求 (1)依次从键盘读入数据,建立带头结点的单链表;(2)输出单链表中的数据元素 (3)求单链表的长度; (4)根据指定条件能够取元素和修改元素; (5)实现在指定位置插入和删除元素的功能。 (6)根据算法,将两个有序的单链表合并成一个有序单链表。 测试数据 由学生任

3、意指定。 三、源代码 顺序表的基本操作2#include using namespace std; #define TRUE 1 #define FALSE 0 #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; typedef int ElemType; #define LIST_INIT_SIZE 100 #define LISTINCREMENT 10 typedef struct /结构体 ElemType *elem; int length; int listsize; SqList; SqList

4、 Lx; Status InitList_Sq(SqList if(!L.elem)exit(OVERFLOW);L.length =0;L.listsize=LIST_INIT_SIZE;return OK; Status ListInsert(SqList ElemType *newbase; if(iL.length+1) return ERROR; if(L.length=L.listsize) newbase=new ElemTypeL.listsize+LISTINCREMENT;if(!newbase) exit(OVERFLOW);L.elem=newbase;L.listsi

5、ze+=LISTINCREMENT; q=for (p=p=q;-p)*(p+1)=*p;*q=e;+L.length;return OK; Status Listlength(SqList L) /长度 int *p=L.elem; /判断线形表是否存在 while(p) return (L.length); 3 Status GetElem(SqList L, int i,ElemType else e=L.elemi-1; return e; void MergeList(SqList La,SqList Lb,SqList InitList_Sq(Lc); int i=1,j=1,k=

6、0; int La_len,Lb_len; La_len=Listlength(La); Lb_len=Listlength(Lb); while(i“; if(j=i-1 coute; L.elemi=e; L.length=i+1; Status ListDelete_Sq(SqList if(iL.length) return ERROR; p= e=*p; q=L.elem+L.length-1; for(+p;pL.length) return ERROR;else L.elemi-1=e;return OK; void shuru(SqList InitList_Sq(L1); c

7、outa; coutj;while(jListlength(L1) coutj; GetElem(L1,j,e1); coutj; while(jListlength(L1) coutj; coute1; Listxiugei(L1,j,e1); coutj; while(jListlength(L1) coutj; ListDelete_Sq(L1,j,e1); coutj; while(jListlength(L1) coutj; coute1; ListInsert(L1,j,e1); couta;coutb;coutchoice;switch(choice) case 1: shuru

8、(Lx);break;case 2: show(Lx,Lx.length);break;case 3: cout using namespace std;7#define true 1 #define false 0 #define ok 1 #define error 0 #define overflow -2 typedef int Status; typedef int ElemType; typedef struct LNode /存储结构 ElemType data;struct LNode *next; LNode,*LinkList; void CreateList(LinkLi

9、st L=new LNode;L-next=NULL; /建立一个带头结点的单链表LinkList q=L; /使 q 指向表尾for(int i=1;ip-data;p-next=NULL;q-next=p;q=p; Status GetElem(LinkList L,int i,ElemType int j=1;while(p+j; if(!p|ji) return error; /第 i 个元素不存在e=p-data;return ok; Status LinkInsert(LinkList int j=0;while(p+j; /寻找第 i-1 个结点if(!p|ji-1) retur

10、n error; /i 小于 1 或者大于表长加 1LinkList s=new LNode; /生成新结点s-data=e;s-next=p-next; /插入 L 中8p-next=s;return ok; Status ListDelete(LinkList LinkList q;int j=0;while(p-next+j; if(!(p-next)|ji-1) return error; /删除位置不合理q=p-next;p-next=q-next; /删除并释放结点e=q-data;delete(q);return ok; void MergeList(LinkList pa=La

11、-next; pb=Lb-next; Lc=pc=La; while(papc=pa;pa=pa-next; else pc-next=pb;pc=pb;pb=pb-next; pc-next=pa?pa:pb;delete(Lb); void show(LinkList L) /显示 LinkList p;p=L-next;while(p) coutdata“;p=p-next; 9coutnext;while(p) +i;p=p-next; return i; void xiugai(LinkList L) /修改 int i,j=1;ElemType k;ElemType e,m;Lin

12、kList p=L-next;couti;GetElem(L,i,e);coutk;while(p+j; m=p-data;p-data=k;couta;coutb;coutselect;switch(select) case 1:coutx;coutx;while(xLength(list,s) coutx; GetElem(list,x,y);coutx;while(xLength(list,s)11 coutx; couty;LinkInsert( list,x,y);coutx;while(xLength(list,s) coutx; ListDelete(list,x,y);cout

13、“要删除的元素值:“yendl;cout“删除后的单链表显示如下:“endl;show(list);break;case 8: hebing();break;case 9: exit(0);break;default : cout“输入有误,请重新输入“endl;break; 四、测试结果 顺序表 的测试结果1213单链表的测试结果1415五、心得体会16当听到老师说写数据结构实验报告时,我有点惊讶,才学了不到一个月,就要写实验报告。 记得去年学习 C+时,学了一个学期,程序设计用了三周,才完成的,这个实验报告居然 要一周完成两个设计,觉得很难。但是现在一周过去了,我也写完了,自我感觉良好。

14、通过这次写实验报告,我深切的理解了这门课的本质。刚开始学这门课时,当时还不清楚 这门课程的目的,现在,我真正的理解了:数据结构像是身体的骨骼,而 C+是填充这骨 骼的肉体,二者相结合才能使整个程序更加完整,健全。数据结构是个框架,模型,抽象 数据类型中列举了各种操作,而所用的 C+语言,将各种操作描述出来构成算法。数据结 构+算法=程序设计。 在这次设计的过程中,我还遇到了,很多的问题。顺序表是按顺序存储的,用了一维数组 来存储,又结合 C+的程序设计,我又用了类,但是,在执行时出现了问题。后来问同学, 指出我的错误,不过获益不少。我又重新整理思路,把顺序表的基本操作写好了。虽然走 了很多弯路,但是让我认识到,一定要创新,大胆,不能按照旧的思路去干新的事情。 单链表写起来简单多了,这个很快就搞定了。但是细节上出了问题。比如说,有些变量的 重复定义,有些变量又没有定义,在调用函数,就直接复制过来,没有改参数通过修 改,我深刻理解到:细节决定成败,在以后,不管做任何事情都要认真,细心。 这次的实验报告,让我受益匪浅,不仅有知识方面的,还有生活和精神上的。总之,我会 继续我的兴趣编程,相信在

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 研究报告 > 综合/其它

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号