单链表的简单操作实验报告.doc_第1页
单链表的简单操作实验报告.doc_第2页
单链表的简单操作实验报告.doc_第3页
单链表的简单操作实验报告.doc_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构实验报告单链表得简单操作班级_信息与计算科学_ 姓名_宋春生_ 学号_0601214029_1.实验目的:利用数据结构课上所学过得有关线性表的知识,编写程序实现单链表的插入、删除、合并、排序等一系列操作。2.实验步骤:1.创建空链表2.利用元素插入法创建链表3.编写插入删除排序合并的程序代码4.编写主函数,通过调用实现链表的插入删除合并及排序5.编译程序,检查错误,运行数据3.实验中遇到的问题及解决方法:1.在构造线性表存储结构时要注意字母的大小写,前后应该是一样的.前面是LNode后面分配存储空间时用是错误的lnode,应该也用大写。2.遇到输入数据错误时应加上返回语句return 0否则可能会出现程序检查没有错误但运行时出现内存错误的提示。3.在函数调用时函数的形参不能写类型,如在调用创建链表函数时不能写成creat(Linklist &La),正确的写法应该是creat(La)。4.空指针应该用大写字母NULL表示,只把第一个字母大写写成Null是错误的,电脑不能识别。 以上所出现的错误主要是因为自己的基础知识掌握不牢固,编写程序时粗心大意,导致出现众多错误。从这次实验中我认识到编写程序一定要细心,容不的一点的错误,哪怕知识一个字母大小写的区别,或许就因为一个字母会导致程序中出现几十个错误,给我们带来不必要的麻烦,所以在以后的编程时一定要注意。4.程序代码及运行结果:源程序代码:#includestdio.h#includestdlib.h#includemalloc.htypedef int ElemType;typedef struct LNodeElemType data;struct LNode *next;LNode,*Linklist;int printf(Linklist &L)Linklist p;p=L-next;if(L-next!=NULL)doprintf(%4d,p-data);p=p-next;while(p!=NULL);printf(n);return 0;int creatempty(Linklist &L)L=(Linklist)malloc(sizeof(LNode);L-next=NULL;return 0;int creat(Linklist &L)Linklist p,q;int i,a;printf(初始化链表n);creatempty(L);p=L;printf(请输入链表元素个数:);scanf(%d,&a);printf(请输入元素值:); for(i=0;idata);q-next=p-next;p-next=q;p=p-next;printf(L);return 0;int ListInsert(Linklist &L)Linklist p,s;int i,j,e; printf(请输入要插入元素的位置和值:);scanf(%d%d,&i,&e);p=L;j=0;while(p&jnext;+j;if(!p|ji-1)printf(i值不合法!);return 0;s=(Linklist)malloc(sizeof(LNode);s-data=e;s-next=p-next;p-next=s;printf(L);return 0;int ListDelete(Linklist &L) Linklist p,q;int i,j,e;printf(请输入要删除元素的位置:); scanf(%d,&i);p=L;j=0;while(p-next&jnext;+j;if(!(p-next)|ji-1)printf(删除位置不合法!);return 0;q=p-next;p-next=q-next;e=q-data;free(q); printf(L);return 0;void Listsort(Linklist &head,int n) Linklist p,q;int i,j;for(i=0;inext;for(j=0;jnext-dataq-next-data)p-next=q-next;q-next=q-next-next;p-next-next=q;p=p-next;elsep=p-next;q=q-next;int len(Linklist &head)int i=0;Linklist p; p=head-next; while(p)i+;p=p-next;return i;void Mergelist(Linklist &La,Linklist &Lb,Linklist &Lc) Linklist pa,pb,pc;pa=La-next;pb=Lb-next;Lc=pc=La;while(pa&pb)if(pa-datadata)pc-next=pa;pc=pa;pa=pa-next;elsepc-next=pb;pc=pb;pb=pb-next;pc-next=pa?pa:pb;free(Lb); len(Lc); Listsort(Lc,len(Lc); printf(合并后的链表为:); printf(Lc);void main() Linklist La,Lb,Lc; int i; printf( 1.插入新元素n); printf( 2.删除新元素n); printf( 3.合并两个链表n); loop:printf(请做出选择:);scanf(%d,&i);if(i=1)creat(La);ListInsert(La);if(i=2)creat(Lb);ListDelete(Lb);if(i=3)Mergelist(La,Lb,Lc);printf(是否继续操作,是1,否2:);scanf(%d,&i);if(i=1)goto loop; 运行结果:1.插入新元素2.删除新元素3.合并两个链表请做出选择:1初始化链表请输入链表元素个数:3请输入元素值:1请输入元素值:2请输入元素值:3 1 2 3请输入要插入元素的位置和值:2 41 4 2 3是否继续操作,是1,否2:1请做出选择:2初始化链表请输入

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论