数据结构 线性表操作实验报告

数据结构 线性表操作实验报告

ID:33605161

大小:132.00 KB

页数:7页

时间:2019-02-27

数据结构 线性表操作实验报告_第1页
数据结构 线性表操作实验报告_第2页
数据结构 线性表操作实验报告_第3页
数据结构 线性表操作实验报告_第4页
数据结构 线性表操作实验报告_第5页
资源描述:

《数据结构 线性表操作实验报告》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、《数据结构》实验报告实验题目:线性表的操作实验目的:1.掌握上机调试线性表的基本方法;2.掌握线性表的一些基本操作;实验内容:将两个有序链表合并为一个有序链表一、需求分析1.实验程序中先创建两个有序链表,演示程序以用户和计算机的对话方式执行,即在计算机终端上显示“提示信息”之后,由用户在键盘上输入两个链表中的相应数据。2.将两个链表合并时可按数据从大到小或从小到大合并,用户根据提示可选择一种排序方式。3.程序执行命令包括:(1)构造链表;(2)输入数据;(3)合并两个链表,根据用户需求选择一种排序

2、方式;(4)将合并结果输出;(5)结束4.测试数据:链表1数据为:2,4,6,7,10链表2数据为:1,3,5,6,7,12按从小到达合并为:1,2,3,4,5,6,6,7,7,10,12;按从大到小合并为:12,10,7,7,6,6,5,4,3,2,1;二、概要设计1.基本操作Linklistcreat()操作结果:构造一个链表,并输入数据,返回头节点指针。voidprint(Linklisthead)初始条件:链表已存在;操作结果:将链表输出。voidMergeList_1(LinklistL

3、a,LinklistLb)初始条件:有序线性链表La和Lb已存在;操作结果:将La和Lb两个链表按从小到大的顺序合并。voidMergeList_2(LinklistLa,LinklistLb)初始条件:有序线性链表La和Lb已存在;操作结果:将La和Lb两个链表按从大到小的顺序合并。2.本程序包括四个模块:(1)主程序模块;(2)链表数据输入模块;将新链表输出按从小到大合并两链表(3)链表合并模块;(4)链表输出模块;数据输入主程序模块将新链表输出按从大到小合并两链表三、详细设计1.元素类型,节

4、点类型,指针类型typedefstructLNode//定义节点{intdata;structLNode*next;}LNode,*Linklist;2.每个模块的分析(1)主函数模块intmain(){Linklisthead1,head2;inti;printf("请输入链表1数据(由小到大,输入0表示输入结束):");head1=creat();//创建链表1,将头结点指针返回为head1printf("请输入链表2数据(由小到大,输入0表示输入结束):");head2=creat(

5、);printf("请选择排序方式(输入1则从小到达合并,输入其它整数则按从大到小合并):");scanf("%d",&i);//创建链表2,将头结点指针返回为head2if(i==1)//选择两种排序方式,如果输入1,则合并后按从小到大输出;输入其它数,合成链表按从大到小输出{printf("按小到大将两表合并得:");MergeList1(head1,head2);//将创建好的两表的头结点地址head1,head2作为函数参数}else{printf("按从大到小将两表合并得:");

6、MergeList2(head1,head2);//将创建好的两表的头结点地址head1,head2作为函数参数}return0;}(2)数据输入创建链表模块Linklistcreat()//创建链表函数,并将创建链表的头结点指针返回{Linklisthead,p,s;intz=1,x;head=(LNode*)malloc(sizeof(LNode));p=head;while(z){scanf("%d",&x);if(x!=0)//输入0表示链表数据输入结束{s=(LNode*)malloc(

7、sizeof(LNode));s->data=x;p->next=s;s->next=NULL;p=s;}elsez=0;}return(head);}(3)合并链表模块,两个函数分别表示两种排序方式,将链表合并后直接在函数中调用链表输出函数voidprint(Linklisthead)将链表输出voidMergeList_1(LinklistLa,LinklistLb)//已知链表La和Lb元素都按从小到大排列,将La和Lb合并成新链表,其中元素也按从小到大排列{Linklistpa,pb,pc

8、,Lc;pa=La->next;pb=Lb->next;Lc=pc=La;//把La的头节点作为新建链表Lc的头结点while(pa&&pb){if(pa->data<=pb->data){pc->next=pa;pc=pa;pa=pa->next;}else{pc->next=pb;pc=pb;pb=pb->next;}}pc->next=pa?pa:pb;//插入剩余段print(Lc);//将链表Lc输出}voidMergeList_2(LinklistLa,Linklist

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。