软件技术基础上机试验报告链表_第1页
软件技术基础上机试验报告链表_第2页
软件技术基础上机试验报告链表_第3页
软件技术基础上机试验报告链表_第4页
软件技术基础上机试验报告链表_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

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

文档简介

1、命运如同手中的掌纹,无论多曲折,终学握在自己手中。cx2:链表的插入与删除1)首先创建一个单链表:从键盘读入五个整数,按输入顺序形成 单链表。将创建好的链表元素依次输出到屏幕上。2)在已创建好的链表中插入一个元素:从键盘读入元素值和插入 位置,调用插入函数完成插入操作。然后将链表元素依次输出到 屏幕上。3)在已创建好的链表中刪除一个元素:从键盘读入欲刪除的元素 位置(序号),调用刪除函数完成删除操作。然后将链表元素依次 输出到屏幕上。4)从键盘任意输入一个整数,在单链表中查询该数,如果单链 表中已经存在这个数,就调用刪除函数,删除该元素所在结点, 并将单链表在刪除前后的数据元素依次输出到屏幕上

2、;如果单链 表中不存在这个数,就调用插入函数,将这个数插入到单链表尾, 并将单链表在插入前后的数据元素依次输出到屏幕上软件技术基础上机实验报告姓名:肖燕平学号:2011()1909()()28上机实验二Ex2_l (链表的创建和插入删除)#include<stdio.h>#inelude <malloc.h>typedef struct node_type定义链点int data;struct nodetype *next;node_type;typedef struct list_type 左义链表node_type *head;node_type *tail;int

3、 length; list_type;int read()int x;scanfcT,&x);return x;void error(int x)switch(x)case 1:printf(unthe place of the data is wrong ,please input the place againnH); break;void creatjist(list_type *lianbiao)创建链表node.type *p?s;注意此处的指针要为链点结构体类型int x;lianbiao-AheadN no de_type*)malloc(sizeof(node_type

4、);lianbiao->le ngth=0;p=lianbiao->head;while(lianbiao->length<5)输入五个数scanf(吆 d”,&x);s=(no de_type*)malloc(sizeof( no de_type);s->data=x;p->next=s;P=S;在链点连接上出现了问题导致后而显示链表时也岀问题lian biao >length+;p->next=NULL;lianbiao->tail=p;void showist(list_type *lianbiao)把链表元素打印岀来node

5、_typ *p;p=lianbiao->head->next;printf("nThe linked list isnnN);while(p!=NULL)printf("%d Hzp->data);p=p->next;/p 往下走一步printf(HnThe length of this linked list is %dn"Jianbiao->length);void insertist(list_type *lianbiaont newdatajnt place)node_type *newnodez*p;int i=0;newn

6、o de=(node_type*)malloc(sizeof(node_type);newnode->data=newdata;p=lia nbiao>head;while(lianbiao->length+l<place11 place<l)/lj断插入的位置是否正确 error(l);place=read();位置错误则重新输入位置while(i<place-l)使p指针指向插入位宜的前一个p=p->next;i+;n ewnode->next=p->next;插入链点p>n ext=newnode;if(newnode->

7、next=NULL)lianbiao->tail=newnode;若插入的位置为表尾,则改变尾指针lianbiao->le ngth+;void deleteist(list_type *lianbiao,int place) int i=0;node_type *pz*g;p=lianbiao->head;while(place>lianbiao->length| | place<l)检査删除元素的位宜是否符合要求error(l);使P指针指向删除位宜的前一个删除链点若删除的是最后一个元素,则改变尾指针的指向链表长度自减一place=read(); whi

8、le(i<place-l)p=p->next;i+;g=p->n ext;p->next=p->next->next;free(g);if(p->next=NULL)lian biao > tail=p;llanbiao >len gth-;void search_list(list_type *lianbiao,int number)寻找那个整数node_type *p;int i=0;int m;m=lianbiao->length;记录原来链表的长度p=lianbiao->head;while(p->next!=NU

9、LL) p如果指向最后一个元素,则跳出循环while(p->n ext->data=二n umber)deletejist(lianbiao,i+l);/p的下一个元素如果是这个数,那么删除 if(p->next=NULL)/若p已经指向最后一个那么跳出删除的循环 break;if(p->next!=NULL) 若p没有指向最后一个那么让p指向下一个p=p->n ext;i+;if(i=m)若链表中元素没有与指定数相同的,则将数插入链表in sert_list(lia nbiao,number;m+l);void main()list_type lianbiao;

10、int newdata,place;int del_place;int number;printf("please input the the listnH);creat_list(&lianbiao);创建链表,把链表这一包含头和尾的指针传过去show_list(&lianbiao);而没有像书上一样传链点printf(Hnplease in put the new datanH);newdata=read();printf(Hplease input the place of the new data where it should ben”); place=re

11、ad();12345The length of this linked list is 5please input thE new datarplease input the place of the new data, whepe it should be6The linked list is12345-9The length of this linked list is 6删除一个数please input the place o£ the nunber which will be deleted 2The linked list is32345The length of thi

12、s linked list is 5please input the numbep that you want to seapehplease input the place o£ the number which will be deleted1The linked list is2345-9The length of this linked list is 5please input the number that you want to search查找一个数,如果链表中有数与之相同,则删除这些数The linked list is32345The length of this

13、 linked list is 5please input the number that you want to searchThe linked list isZ 45|The length of this linked list is 32345-9IT he length of this linked list is 5please input the number that you want to search-9The linked list is2345The length of this linked list is 4问题及解决方法问题1:创建链表时定义的指向结构体的指针没有

14、定义为结构体类型 解决方法:将原先定义的int型改为结构体的类型注意:指向结构体的指针要定义为结构体类型问题2:未给链点动态分配空间注意:定义一个结构体变量只分配一个结构体空间,而不是整个链表的空间都分配了,链表中每个链点的空间要动态申请解决方法:没用一个链点前动态分配一个空间问题3:定义了一个链表结构类型的的变量,但未定义或动态分配空 间给该变量内部head指针所指向的结构体便直接访问该结构体,导 致错误。解决方法:再另动态分配空间给该指针变量所指向的结构体注意:结构体定义时并未分配空间,系统给某指针分配了空间不代表 给他的指向变量也分配了空间。问题4:创建链表时各链点未衔接。解决方法:再增加一个指针握住原链表。注意:在使用动态分配空间增加链点时要使用两个指针,其中一个作为动态空间的指

温馨提示

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

评论

0/150

提交评论