




已阅读5页,还剩4页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
ex2:链表的插入与删除1)首先创建一个单链表:从键盘读入五个整数,按输入顺序形成单链表。将创建好的链表元素依次输出到屏幕上。2)在已创建好的链表中插入一个元素:从键盘读入元素值和插入位置,调用插入函数完成插入操作。然后将链表元素依次输出到屏幕上。3)在已创建好的链表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作。然后将链表元素依次输出到屏幕上。 4)从键盘任意输入一个整数,在单链表中查询该数,如果单链表中已经存在这个数,就调用删除函数,删除该元素所在结点,并将单链表在删除前后的数据元素依次输出到屏幕上;如果单链表中不存在这个数,就调用插入函数,将这个数插入到单链表尾,并将单链表在插入前后的数据元素依次输出到屏幕上软件技术基础上机实验报告姓名:肖燕平学号:2011019090028上机实验 二Ex2_1(链表的创建和插入删除)#include#include typedef struct node_type /定义链点 int data;struct node_type *next;node_type;typedef struct list_type /定义链表 node_type *head;node_type *tail;int length; list_type;int read()int x;scanf(%d,&x);return x;void error(int x)switch(x)case 1:printf(nthe place of the data is wrong ,please input the place againn);break;void creat_list(list_type *lianbiao)/创建链表 node_type *p,*s;/注意此处的指针要为链点结构体类型 int x;lianbiao-head=(node_type*)malloc(sizeof(node_type);lianbiao-length=0;p=lianbiao-head;while(lianbiao-lengthdata=x;p-next=s;p=s;/在链点连接上出现了问题导致后面显示链表时也出问题 lianbiao-length+;p-next=NULL;lianbiao-tail=p; void show_list(list_type *lianbiao)/把链表元素打印出来 node_type *p;p=lianbiao-head-next;printf(nThe linked list isnn);while(p!=NULL)printf(%d ,p-data);p=p-next;/p往下走一步 printf(nThe length of this linked list is %dn,lianbiao-length);void insert_list(list_type *lianbiao,int newdata,int place)node_type *newnode,*p;int i=0;newnode=(node_type*)malloc(sizeof(node_type);newnode-data=newdata;p=lianbiao-head; while(lianbiao-length+1place|place1)/判断插入的位置是否正确 error(1);place=read();/位置错误则重新输入位置 while(inext;i+;newnode-next=p-next;/插入链点 p-next=newnode;if(newnode-next=NULL)lianbiao-tail=newnode;/若插入的位置为表尾,则改变尾指针 lianbiao-length+;void delete_list(list_type *lianbiao,int place)int i=0;node_type *p,*g;p=lianbiao-head;while(placelianbiao-length|place1)/检查删除元素的位置是否符合要求 error(1);place=read();while(inext;i+;g=p-next;p-next=p-next-next;/删除链点 free(g);if(p-next=NULL)/若删除的是最后一个元素,则改变尾指针的指向 lianbiao-tail=p;lianbiao-length-;/链表长度自减一 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!=NULL)/p如果指向最后一个元素,则跳出循环 while(p-next-data=number)delete_list(lianbiao,i+1);/p的下一个元素如果是这个数,那么删除if(p-next=NULL)/若p已经指向最后一个那么跳出删除的循环 break;if(p-next!=NULL)/若p没有指向最后一个那么让p指向下一个 p=p-next;i+;if(i=m)/若链表中元素没有与指定数相同的,则将数插入链表 insert_list(lianbiao,number,m+1);void main()list_type lianbiao; int newdata,place; int del_place; int number; printf(please input the the listn);creat_list(&lianbiao);/创建链表 ,把链表这一包含头和尾的指针传过去 show_list(&lianbiao);/而没有像书上一样传链点 printf(nplease input the new datan);newdata=read();printf(please input the place of the new data where it should ben);place=read();insert_list(&lianbiao,newdata,place);show_list(&lianbiao);printf(nplease input the place of the number which will be deletedn);del_place=read();delete_list(&lianbiao,del_place);show_list(&lianbiao);printf(nplease input the number that you want to searchn);number=read();search_list(&lianbiao,number);show_list(&lianbiao);输出数据如图所示录入五个数插入一个数删除一个数查找一个数,如果链表中有数与之相同,则删除这些数问题及解决方法问题1:创建链表时定义的指向结构体的指针没有定义为结构体类型解决方法:将原先定义的int型改为结构体的类型注意:指向结构体的指针要定义为结构体类型问题2:未给链点动态分配空间注意:定义一个结构体变量只分配一个结构体空间,而不是整个链表的空间都分配了,链表中每个链点的空间要动态申请解决方法:没用一个链点前动态分配一个空间问题3:定义了一个链表结构类型的的变量,但未定义或动态分配空间给该变量内部head指针所指向的结构体便直接访问该结构体,导致错误。解决方法:再另动态分配空间给该指针变量所指向的结构体注意:结构体定义时并未分配空间,系统给某指针分配了空间不代表给他的指向变量也分配了空间。问题4:创建链表时各链点未衔接。解决方法:再增加一个指针握住原链表。注意:在使用动态分配空间增加链点时要使用两个指针,其中一个作为动态空间的指向,另一个握住原已经形成的
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 岑溪市2024-2025学年七年级上学期语文月考模拟试卷
- 毕节市2025-2026学年八年级下学期语文期末模拟试卷
- 北镇市2025-2026学年七年级上学期语文期中测试试卷
- 智能矿山排班创新创业项目商业计划书
- 机器人新闻聚焦创新创业项目商业计划书
- 电商售后服务管理创新创业项目商业计划书
- 超声波无损检测-第2篇-洞察及研究
- 荧光活细胞超分辨-洞察及研究
- 2025年起重机械安装维修人员考试试卷-起重机械安装新技术研究与应用
- 2025年涂装工(中级)职业技能鉴定涂装行业机遇试题试卷
- 承插型盘扣式钢管支架课件
- 出血风险评估表
- 露天矿山课件
- 以书为伴 以书为友PPT模板
- 285号附件4市社区文化活动中心社会化专业化管理费用参考
- 部编版八年级语文上册《身边的文化遗产》课件
- 带式输送机出厂检验报告
- DB11-T 1828-2021文物保护工程资料管理规程
- 供应室pdca质量提高腔镜器械包装合格率品管圈ppt模板课件
- 某大楼建设工程-监理规划
- KDL16变频器更换步骤
评论
0/150
提交评论