软件技术基础上机实验报告(链表)(共9页).doc

上传人:飞****2 文档编号:7254895 上传时间:2022-02-22 格式:DOC 页数:9 大小:104KB
返回 下载 相关 举报
软件技术基础上机实验报告(链表)(共9页).doc_第1页
第1页 / 共9页
软件技术基础上机实验报告(链表)(共9页).doc_第2页
第2页 / 共9页
点击查看更多>>
资源描述

《软件技术基础上机实验报告(链表)(共9页).doc》由会员分享,可在线阅读,更多相关《软件技术基础上机实验报告(链表)(共9页).doc(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精选优质文档-倾情为你奉上ex2:链表的插入与删除1)首先创建一个单链表:从键盘读入五个整数,按输入顺序形成单链表。将创建好的链表元素依次输出到屏幕上。2)在已创建好的链表中插入一个元素:从键盘读入元素值和插入位置,调用插入函数完成插入操作。然后将链表元素依次输出到屏幕上。3)在已创建好的链表中删除一个元素:从键盘读入欲删除的元素位置(序号),调用删除函数完成删除操作。然后将链表元素依次输出到屏幕上。 4)从键盘任意输入一个整数,在单链表中查询该数,如果单链表中已经存在这个数,就调用删除函数,删除该元素所在结点,并将单链表在删除前后的数据元素依次输出到屏幕上;如果单链表中不存在这个数,就调用插

2、入函数,将这个数插入到单链表尾,并将单链表在插入前后的数据元素依次输出到屏幕上软件技术基础上机实验报告姓名:肖燕平学号:28上机实验 二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;vo

3、id 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

4、=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,lianbi

5、ao-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-nex

6、t;/插入链点 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-n

7、ext;/删除链点 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_lis

8、t(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 list

9、n);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 pla

10、ce 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:创建链表时定义

11、的指向结构体的指针没有定义为结构体类型解决方法:将原先定义的int型改为结构体的类型注意:指向结构体的指针要定义为结构体类型问题2:未给链点动态分配空间注意:定义一个结构体变量只分配一个结构体空间,而不是整个链表的空间都分配了,链表中每个链点的空间要动态申请解决方法:没用一个链点前动态分配一个空间问题3:定义了一个链表结构类型的的变量,但未定义或动态分配空间给该变量内部head指针所指向的结构体便直接访问该结构体,导致错误。解决方法:再另动态分配空间给该指针变量所指向的结构体注意:结构体定义时并未分配空间,系统给某指针分配了空间不代表给他的指向变量也分配了空间。问题4:创建链表时各链点未衔接。解决方法:再增加一个指针握住原链表。注意:在使用动态分配空间增加链点时要使用两个指针,其中一个作为动态空间的指向,另一个握住原已经形成的链表。并且,要注意分析链表时从中间开始去考虑问题4:用scanf时输入不进数遗漏了“&”!解决方法:加上。注意:scanf如果多输了数,它会把值赋给下面的scanf,并且中间程序照跑;总结:编程前要先想好思路,列出流程,写出核心的算法。对于链表类的程序,要先想模型,并且先从链表中间开始想思路,再想边界的问题。注意删除链点后动态空间要释放。程序太完美啦!专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 应用文书 > 教育教学

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁