单链表的插入和删除实验报告_第1页
单链表的插入和删除实验报告_第2页
单链表的插入和删除实验报告_第3页
单链表的插入和删除实验报告_第4页
单链表的插入和删除实验报告_第5页
免费预览已结束,剩余1页可下载查看

下载本文档

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

文档简介

1、实验一、单链表的插入和删除 一、目的 了解和掌握线性表的逻辑结构和链式存储结构,掌握单链表的基 本算法及相关的时间性能分析。 |,、- 二、要求: 建立一个数据域定义为字符串的单链表,在链表中不允许有重复 的字符串;根据输入的字符串,先找到相应的结点,后删除之。 三、程序源代码 #in cludestdio.h #i ncludestri ng.h #i ncludestdlib.h #i ncludectype.h typedef struct node char data10; struct node *n ext; ListNode; typedef ListNode * Lin kLi

2、st; / Lin kList CreatListR1(); / / / 自定义 / 定义结点 结点的数据域为字符串 结点的指针域 Lin kList 单链表类型 函数,用尾插入法建立 带头结点的单链表 ListNode *LocateNode();/ 函数,按值查找结点 char ch10,num10; LinkList head; head=CreatListR1(); / printlist(head); / printf( Delete node (y/n):);/ DeleteAll(head); / 删除所有结点,释放内存 void DeleteList(); / 函数,删除指定值

3、的结点 void printlist(); / 函数,打印链表中的所有值 void DeleteAll(); / 函数,删除所有结点, 释放内存 /=主函数 = void main() 用尾插入法建立单链表,返回头指针 遍历链表输出其值 输入“ 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); / 用尾插入法建

4、立带头结点的单链表 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(Please input Node_data:); scanf(%s,ch); / 输入各结点的字符串 while(strcmp(ch,#)!=0) pp=LocateNode(head,ch); / 按值查

5、找结点,返回结点指针 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; / 返回头指针 /=按值查找结点,找到则返回该结点的位置,否则返回 NULL= ListNode *LocateNode(LinkList head, char *key) Li

6、stNode *p=head-next; / 从开始结点比较 while(p / 扫描下一个结点 return p; /若p=NULL则查找失败,否则 p指向找到的值 key 的结点 /=删除带头结点的单链表中的指定结点 = void DeleteList(LinkList head,char *key) ListNode *p,*r,*q=head; p=LocateNode(head,key); / 按 key 值查找结点的 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=head-next; / 从开始结点打印 while(p) printf(%s,

温馨提示

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

评论

0/150

提交评论