




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、2.链表的基本操作对链表施行的操作有很多种,最基本的操作是在链表中插入结点、在链表中删除结点、在链 表中查找结点等。链表结点的插入在空链表中插入一个结点空链表就是头指针为空的链表。用如下语句申请一个new结点:new=(struct node)calloc(1,sizeof(struct node);为new结点填充数据:将要存储的数据对应传递给new结点数据域的各个成员。修改有关指针的指向:将new的next成员置空,使new结点成为链表的最后一个结点; 将head指向new结点。在链表的结点之后插入一个结点要在链表head的C、D结点之间出入一个new结点,就是将new结点变成C结点的下一
2、 个结点,而new结点的下一个结点为D结点.操作过程为:使new的指针域存储结点D的首地址。使C结点的指针域存储结点new的地址。例2建立学生成绩链表,链表有3个结点。#include #define N 3struct s_nodechar num4;int score;struct s_node *next;;main()structsnode*creat_node(void);/*生成链表结点的函数*/structsnode*creat_list(int n);/*建立链表的函数*/void out_list(struct s_node *head);/*输出链表函数*/struct s
3、_node *head=NULL;head=creat_list(N);out_list(head);struct s_node *creat_node(void)/*生成链表结点的函数*/struct s_node *p;int score;fflush(stdin);p=(struct s_node *)calloc(1,sizeof(struct s_node);gets(p-num);scanf(%d”,&score);p-score=score;p-next=NULL;return(p);/*建立链表的函数*/struct s_node * creat_list(int n)stru
4、ct s_node *new,*p;struct s_node *head;int i;if(n=1)new=creat_node();head=new;p=new;for(i=2;inext=new;p=new;if(n=1)return(head);elsereturn(NULL);void out_list(struct s_node *head)/*输出链表函数*/struct s_node *p;if(head!=NULL)p=head;while(p!=NULL)printf(%s %dn”,p-num,p-score);p=p-next;链表结点的删除从链表中删除结点,就是撤销结
5、点在链表中的链接,把结点从链表中孤立出来。在链表链表 中删除结点一般有两个过程:一是把指定的结点从链表中拿下来,它需要通过修改有关结点 的指针域来完成;二是释放该结点使用的内存空间,它需要使用free()函数来完成。如下是在head链表中删除p结点的delete_p()函数:void delete_p(struct node *head,struct node *p)struct node *q;if(p=NULL)printf(no foundn);return;if(p=head)head=p-next;q=p;elseq=p-next;p-next=q-next;printf(ndele
6、te :%dn,q-data);free(q);链表结点的查找在链表中进行查找,就是从链表的第一个结点开始,沿着指针链,用查找值与链表结点逐个 比较的过程。找到符合要求的结点之后,停止查找过程,返回相应的结点指针,否则返回一 个空指针。例3查找值为x的结点并删除 #include struct node int data;struct node *next;;struct node * creat_number(int n)/*建立链表的函数*/struct node *new,*p;struct node *head;int i;if(n=1)new=(struct node *)mallo
7、c(sizeof(struct node);new-data=1;new-next=NULL;head=new;p=new;for(i=2;idata=i;new-next=NULL;p-next=new;p=new;if(n=1)return(head);elsereturn(NULL);void out_list(struct node *head)/*输出链表函数*/struct node *p;if(head!=NULL)p=head;while(p!=NULL)printf(%dn”,p-data);p=p-next;struct node *find_x(struct node *
8、head,int x)/雍链表中查找的函数*/struct node *p,*q;p=q=head;while(p!=NULL&p-data!=x)q=p;p=p-next;if(p=NULL)return(NULL);elsereturn(q);void delete_p(struct node *head,struct node *p)/*在链表中删除 p 结点的函数*/struct node *q;if(p=NULL)printf(no foundn);return;if(p=head)head=p-next;q=p;elseq=p-next;p-next=q-next;printf(ndelete :%dn,q-data);free(q);main()int n,x;struct node *head=NUL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 汉服花灯活动方案
- 爱心资助主题班会课件
- 2024落实企业安全生产主体责任履职报告
- 基于WHO康复胜架构的中小学特殊教育教师评价体系构建
- 定日地震震源特性分析及其对地质活动影响研究
- 专精特新企业的数字化转型:多元驱动路径探析
- 基于双重注意力机制的优化策略
- 开发并应用增量集成式多物理耦合分析平台的技术方案
- 轨道交通安全检测技术-洞察阐释
- 跨平台开发可维护性-洞察阐释
- 2025年中航油招聘笔试参考题库附带答案详解
- 人工智能技术创新对产业高质量发展的推动作用
- 2024年中国中高端电子铝箔行业市场调查报告
- 2025年中国征信行业发展监测及投资战略规划研究报告
- Unit 1 Happy Holiday 第6课时(Project Reading Plus) 2025-2026学年人教版英语八年级下册
- 部编人教版三年级上册语文必记必背
- 2025年中国PHA可降解塑料行业市场全景分析及前景机遇研判报告
- 《学习雷锋精神争主题班会》课件
- 2025江苏省射阳中等专业学校工作人员招聘考试真题
- GB/T 27772-2025病媒生物密度控制水平蝇类
- 【MOOC】《算法设计与分析》(东北大学) 中国大学慕课答案
评论
0/150
提交评论