电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

单链表操作验证实验报告VIP免费

单链表操作验证实验报告_第1页
1/7
单链表操作验证实验报告_第2页
2/7
单链表操作验证实验报告_第3页
3/7
实验报告实验名称单链表操作验证实验一单链表操作验证一.实验目的(1)掌握线性表的链接存储结构;(2)验证单链表及其基本操作的实现;(3)进一步掌握数据结构及算法的程序实现的基本方法。二.实验内容(1)用头插法(或尾插法)建立带头结点的单链表;(2)对已建立的单链表实现插人、删除、查找等基本操作。三.实验步骤1.需求分析本演示程序用VC++编写,完成单链表的生成,任意位置的插入、删除,以及确定某一元素在单链表中的位置。①输入的形式和输入值的范围:插入元素时需要输入插入的位置和元素的值;删除元素时输入删除元素的位置;查找操作时需要输入元素的值。在所有输入中,元素的值都是整数。②输出的形式:在所有三种操作中都显示操作是否正确以及操作后单链表的内容。其中删除操作后显示删除的元素的值,查找操作后显示要查找元素的位置。③程序所能达到的功能:完成单链表的生成(通过插入操作)、插入、删除、查找操作。④测试数据:(1)生成单链表123234345456(2)查找1位置为23(3)删除数据2(4)插入267(5)输出数据1232673454562.源程序如下:#include#include#include#include#defineNULL0structdata{intnum;intd;structdata*next;};structdata*head,*p,*tail;intlen,i;structdata*creat(){intn;len=sizeof(structdata);printf("len=");scanf("%d",&n);printf("输入创建单链表:\n");head=(structdata*)malloc(len);printf("数据位置和数据:\n");scanf("%d%d",&head->num,&head->d);tail=head;for(i=2;i<=n;i++){p=(structdata*)malloc(len);scanf("%d%d",&p->num,&p->d);tail->next=p;tail=p;}tail->next=NULL;return(head);}voidoutput(structdata*head){intj;structdata*p0,*p1;p=head;for(j=0;jnext;if(p->num>p0->num){p1=p;p=p0;p0=p1;}}for(p=head;p!=NULL;p=p->next)printf("%d:%d\n",p->num,p->d);}structdata*ins(structdata*head){structdata*p0,*p1,*p2;structdata*ins;printf("输入插入的位置和数据:");ins=(structdata*)malloc(len);scanf("%d%d",&ins->num,&ins->d);p1=head;p0=ins;if(head==NULL){head=p0;p0->next=NULL;}else{while((p0->num>p1->num)&&(p1->next!=NULL)){p2=p1;p1=p1->next;}if(p0->num<=p1->num){if(head==p1)head=p0;elsep2->next=p0;p0->next=p1;}else{p1->next=p0;p0->next=NULL;}}for(p=head;p!=NULL;p=p->next)printf("%d:%d\n",p->num,p->d);return(head);}structdata*del(structdata*head){structdata*p1,*p2;intnum;printf("输入删除位置:");scanf("%d",&num);if(head==NULL){printf("链表空!\n");gotoend;}p1=head;while(p1->num!=num&&p1->next!=NULL){p2=p1;p1=p1->next;}if(p1->num==num){if(p1==head)head=p1->next;elsep2->next=p1->next;}elseprintf("没有发现%d!\n",num);for(p=head;p!=NULL;p=p->next)printf("%d:%d\n",p->num,p->d);end:return(head);}voidfind(structdata*head){structdata*p1;intnum;printf("输入查找位置:");scanf("%d",&num);if(head==NULL){printf("链表空!\n");gotoend;}p1=head;while(p1->num!=num&&p1->next!=NULL){p1=p1->next;}if(p1->num==num){printf("这数据信息\n");printf("%d:%d\n",p1->num,p1->d);}elseprintf("%d没有发现!\n",num);end:;}voidmain(){structdata*head;intselect;head=NULL;while(1){printf("1:创建2:插入3:删除4:查找5:输出6:退出\n");printf("pleaseinputselect:");scanf("%d",&select);switch(select){case1:head=创建();break;case2:head=插入(head);break;case3:head=删除(head);break;case4:查找d(head);break;case5:输出(head);break;case6:退出(0);}}}3.使用说明:===================================1:————创建2:————插入3:————删除4:————查找5:————输出6:————退出===================================Select:在select后输入数字选择执行不同的功能。要求首先输入足够多的插入元素,才可以进行其他的操作。每执行一次功能,就会显示执行的结果(正确或错误)以及执行后单链表的内容。选择1.创建一个单链表。选择2.选择插入的位置和和数据。选择3.输入要删除的位置,程序将删除该位置的数据。选择4.输入查找到位置,程序将显示该位置的数据。选择5.程序将自动输出经过变化后的单链表。选择6.退出程序。4.测试结果截图:四、实验总结(结果分析和体会)1.我又进一步巩固了C语言的基础,尤其是指针那部分;2.通过实验加深了对线性表的操作方面知识的认识。更深层次了解了单链表的操作特点及优缺点;3.通过实验达到了理论与实践结合的目的,提高了自己的编程能力;4.通过实验是我进一步对单链表进行了复习与巩固。这是在实践中对自我能力的提高。5.程序可能不够完善需要在学习过程中不断去完善,这需要平时的努力。

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

单链表操作验证实验报告

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部