ImageVerifierCode 换一换
格式:DOCX , 页数:33 ,大小:27.40KB ,
资源ID:1403826      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/1403826.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(精品word数据结构实验报告答案.docx)为本站会员(b****1)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

精品word数据结构实验报告答案.docx

1、精品word数据结构实验报告 答案数据结构(C语言版) 实验报告专业 班级 学号 姓名 实验1实验题目:单链表的插入和删除实验目的:了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基本算法及相关的时间性能分析。实验要求:建立一个数据域定义为字符串的单链表,在链表中不允许有重复的字符串;根据输入的字符串,先找到相应的结点,后删除之。实验主要步骤:1、分析、理解给出的示例程序。2、调试程序,并设计输入数据(如:bat,cat,eat,fat,hat,jat,lat,mat,#),测试程序的如下功能:不允许重复字符串的插入;根据输入的字符串,找到相应的结点并删除。3、修改程序:(1)增加插入结

2、点的功能。(2)将建立链表的方法改为头插入法。程序代码:#includestdio.h#includestring.h#includestdlib.h#includectype.htypedef struct node /定义结点 char data10; /结点的数据域为字符串 struct node *next; /结点的指针域ListNode;typedef ListNode * LinkList; / 自定义LinkList单链表类型LinkList CreatListR1(); /函数,用尾插入法建立带头结点的单链表LinkList CreatList(void); /函数,用头插入

3、法建立带头结点的单链表ListNode *LocateNode(); /函数,按值查找结点void DeleteList(); /函数,删除指定值的结点void printlist(); /函数,打印链表中的所有值void DeleteAll(); /函数,删除所有结点,释放内存ListNode * AddNode(); /修改程序:增加节点。用头插法,返回头指针/=主函数=void main() char ch10,num5; LinkList head; head=CreatList(); /用头插入法建立单链表,返回头指针 printlist(head); /遍历链表输出其值 print

4、f( Delete node (y/n):); /输入y或n去选择是否删除结点 scanf(%s,num); if(strcmp(num,y)=0 | strcmp(num,Y)=0) printf(Please input Delete_data:); scanf(%s,ch); /输入要删除的字符串 DeleteList(head,ch); printlist(head); printf( Add node ? (y/n):); /输入y或n去选择是否增加结点 scanf(%s,num); if(strcmp(num,y)=0 | strcmp(num,Y)=0) head=AddNode

5、(head); printlist(head); DeleteAll(head); /删除所有结点,释放内存/=用尾插入法建立带头结点的单链表=LinkList CreatListR1(void) char ch10; LinkList head=(LinkList)malloc(sizeof(ListNode); /生成头结点 ListNode *s,*r,*pp; r=head; r-next=NULL; printf(Input # to end ); /输入#代表输入结束 printf(nPlease input Node_data:); scanf(%s,ch); /输入各结点的字符

6、串 while(strcmp(ch,#)!=0) pp=LocateNode(head,ch); /按值查找结点,返回结点指针 if(pp=NULL) /没有重复的字符串,插入到链表中 s=(ListNode *)malloc(sizeof(ListNode); strcpy(s-data,ch); r-next=s; r=s; r-next=NULL; printf(Input # to end ); printf(Please input Node_data:); scanf(%s,ch); return head; /返回头指针/=用头插入法建立带头结点的单链表=LinkList Cre

7、atList(void) char ch100; LinkList head,p; head=(LinkList)malloc(sizeof(ListNode); head-next=NULL; while(1) printf(Input # to end ); printf(Please input Node_data:); scanf(%s,ch); if(strcmp(ch,#) if(LocateNode(head,ch)=NULL) strcpy(head-data,ch); p=(LinkList)malloc(sizeof(ListNode); p-next=head; head

8、=p; else break; return head; /=按值查找结点,找到则返回该结点的位置,否则返回NULL=ListNode *LocateNode(LinkList head, char *key) ListNode *p=head-next; /从开始结点比较 while(p!=NULL & strcmp(p-data,key)!=0) /直到p为NULL或p-data为key止 p=p-next; /扫描下一个结点 return p; /若p=NULL则查找失败,否则p指向找到的值为key的结点/=修改程序:增加节点=ListNode * AddNode(LinkList he

9、ad) char ch10; ListNode *s,*pp; printf(nPlease input a New Node_data:); scanf(%s,ch); /输入各结点的字符串 pp=LocateNode(head,ch); /按值查找结点,返回结点指针 printf(ok2n); if(pp=NULL) /没有重复的字符串,插入到链表中 s=(ListNode *)malloc(sizeof(ListNode); strcpy(s-data,ch); printf(ok3n); s-next=head-next; head-next=s; return head;/=删除带头

10、结点的单链表中的指定结点=void DeleteList(LinkList head,char *key) ListNode *p,*r,*q=head; p=LocateNode(head,key); /按key值查找结点的 if(p=NULL ) /若没有找到结点,退出 printf(position error); exit(0); while(q-next!=p) /p为要删除的结点,q为p的前结点 q=q-next; r=q-next; q-next=r-next; free(r); /释放结点/=打印链表=void printlist(LinkList head) ListNode

11、 *p=head-next; /从开始结点打印 while(p) printf(%s, ,p-data); p=p-next; printf(n);/=删除所有结点,释放空间=void DeleteAll(LinkList head) ListNode *p=head,*r; while(p-next) r=p-next; free(p); p=r; free(p);实验结果:Input # to end Please input Node_data:batInput # to end Please input Node_data:catInput # to end Please input

12、Node_data:eatInput # to end Please input Node_data:fatInput # to end Please input Node_data:hatInput # to end Please input Node_data:jatInput # to end Please input Node_data:latInput # to end Please input Node_data:matInput # to end Please input Node_data:#mat, lat, jat, hat, fat, eat, cat, bat, Del

13、ete node (y/n):yPlease input Delete_data:hatmat, lat, jat, fat, eat, cat, bat, Insert node (y/n):yPlease input Insert_data:putposition :5mat, lat, jat, fat, eat, put, cat, bat,请按任意键继续. . .示意图:latjathatfateatcatbatmatNULLheadlatjathatfateatcatbatmatheadlatjatfateatputcatbatmatheadNULLNULL心得体会:本次实验使我们对链表的实质了解更加明确了,对链表的一些基本操作也更加熟练了。另外实验指导书上给出的代码是有一些问题的,这使我们认识到实验过程中不能想当然的直接编译执行,应当在阅读并完全理解代码的基础上再执行,这才是实验的意义所在。实验2实验题目:二叉树操作设计和实现实验目的:掌握二叉树的定义、性质及存储方式,各种遍历算法。实验要求:采用二叉树链表作为存储结

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1