c语言链表的插入、删除和查找.doc_第1页
c语言链表的插入、删除和查找.doc_第2页
c语言链表的插入、删除和查找.doc_第3页
c语言链表的插入、删除和查找.doc_第4页
c语言链表的插入、删除和查找.doc_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

实验报告示例 信息系情报10_级 _02_班 _2011_年_10_月_ 3日姓名_杨 健_ 学号_ 08_ 电话1实验题目编制一个演示单链表插入、删除、查找等操作的程序2需求分析本演示程序用C语言编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。 输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。在所有输入中,元素值都是整数 输出的形式:在所有三种操作中都显示操作是否正确以及操作后单链表的内容。其中查找操作后显示要查找元素的位置。 程序所达到的功能:完成单链表的生成(通过插入操作)、插入、删除、查找操作 测试数据:A 插入操作中输入1,插入位到位于1的位置 B 查找操作中输入a,返回这个元素在单链表中的所有位置C 删除操作中输入2,删除位于2的元素3概要设计InitLinkList(&L)操作结果:构造一个空的单链表L.InsLinkList(&L,pos,e)初始条件:单链表L已存在操作结果:将元素e插入到单链表L的pos位置DelLinkList(&L,pos,&e)初始条件:单链表L已存在操作结果:将单链表L中pos位置的元素删除LocLinkList(L,e)初始条件:单链表L依存在操作结果:单链表L中查找是否元素e,若存在,返回元素在表中的位置;若不存在,输出没有找到.2)本程序包含6个函数: 主函数main() 初始化单链表函数InitLinkList() 显示单链表内容函数dispLinkList() 插入元素函数InsLinkList() 删除元素函数DelLinkList() 查找元素函数LocLinkList()4详细设计实现概要设计中定义的所有的数据类型,对每个操作给出伪码算法。对主程序和其他模块也都需要写出伪码算法。1) 结点类型和指针类型typedef struct LinkList int data;struct LinkList *next;LIST;2) 单链表的基本操作为了方便,在单链表中设头结点,其data域没有意义。List InitLinkList(LinkList &L)(伪码算法)List DispLinkList(LinkList L)(伪码算法)List InsLinkList(LinkList &L,int pos,int e)(伪码算法)void DelLinkList(LinkList &L,int pos,int &e)(伪码算法)void LocLinkList(LinkList L,int e)(伪码算法)3) 其他模块伪码算法5调试分析6使用说明程序执行后显示=0-EXIT1-INSERT2-DELETE3-LOCATE=SELECT:在select后输入数字选择执行不同的功能。要求首先输入足够多的插入元素,才可以进行其他的操作。每执行一次功能,就会显示执行的结果(正确或错误)以及执行后单链表的内容。7测试结果1) 建立单链表: 选择1,分别输入15,14,13,12,11,得到单链表(15,14,13,12,11)2) 插入: 选择1输入(2,100),得到单链表(15,100,14,13,12,11) 选择1输入(-1,2),显示输入的值不正确 选择1输入(8,2),显示输入的值不正确 选择1输入(6,2),得到单链表(15, 14,13,12,11,2)3) 删除: 选择2,输入2。得到单链表(15,13,12,11) 选择2,输入1。得到单链表(14,13,12,11) 选择2,输入4。得到单链表(15,14,13, 11) 选择2,输入6。显示输入的值不正确4) 查找 选择3,输入14。返回pos=2 选择3,输入100。返回没有这个数程序如下:#include#includetypedef struct LinkList int data;struct LinkList *next;LIST;LIST *InitLinkList();LIST *InsLinkList(LIST *,int);LIST *DelLinkList(LIST *,int);void LocLinkList(LIST *,int);void dispLinkList(LIST *);void main()int t,i;LIST *h; h=InitLinkList();/创建一个单链表 dispLinkList(h);/输出单链表printf(=n);printf(0-EXITn);printf(1-INSERTn); printf(2-DELETEn);printf(3-LOCATEn);printf(=n);printf(SELECT:);scanf(%d,&t);switch(t) case 0:break;case 1:printf(请输入要插入的位置:); scanf(%d,&i); h=InsLinkList(h,i);/插入结点 dispLinkList(h);/输出单链表 break;case 2:printf(请输入要删除的位置:); scanf(%d,&i); h=DelLinkList(h,i);/删除结点 dispLinkList(h);/输出单链表 break;case 3:printf(请输入要查找的数:); scanf(%d,&i); LocLinkList(h, i);/查找结点 break;default : printf(输入错误!n); break; LIST *InitLinkList()LIST *h,*s,*r;int c;h=(LIST*)malloc(sizeof(LIST);r=h;printf(请输入一串数字(以0结束):);scanf(%d,&c);while(c!=0) s=(LIST*)malloc(sizeof(LIST);s-data=c;r-next=s;r=s;scanf(%d,&c);r-next=0;return h;LIST *InsLinkList(LIST *h,int i)LIST *s,*p;int c,j=1;p=h;s=(LIST*)malloc(sizeof(LIST);printf(输入要插入的数:);scanf(%d,&c);s-data=c;s-next=0;while(j!=i&p!=0)p=p-next; j+;if(p=0)printf(输入i的值不正确!n);else s-next=p-next; p-next=s;return h;LIST * DelLinkList(LIST *h,int i)LIST *p,*q;int j=1;p=h;q=p-next; while(j!=i&q!=0)p=q;q=q-next;j+;if(q=0)printf(输入i的值不正确!n);else if(q-next=0)p-next=0;free(q);else p-next=q-next;free(q);return h;void LocLinkList(LIST *h,int i)LIST *p=h;int j=0,m=0;while(p-next!=0)if(p-data=i) printf(pos=%dn,j);m+;p=p-next;j+;if(m=0)printf(没有这个数!

温馨提示

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

评论

0/150

提交评论