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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

数据结构C语言版实验报告doc.docx

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

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

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

4、ad);printf( Delete node (y/n):);scanf(%s,num);/ 用头插入法建立单链表,返回头指针/ 遍历链表输出其值/ 输入 y 或 n 去选择是否删除结点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

5、,y)=0 | strcmp(num,Y)=0)head=AddNode(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_

6、data:);scanf(%s,ch);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;/返回头指针/= 用头插入法建立带头结点的单链表 =Lin

7、kList CreatList(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=p;el

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

9、ode(LinkList head)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 *p=

11、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 Node_data:e

12、atInput # 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,Delete node (y/

13、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,请按任意键继续 . . .示意图:headmat lat jat hat fat eat cat batNULLheadmat lat jat fat eat cat batNULLhatheadmat lat jat fat eat cat batNULLput心得体会:本次实验使我们对链表的实质了解更加明确了, 对链表的一些基本操作也更

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

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