版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 浙江国企招聘2025嘉兴海宁市袁花镇所属国资公司招聘4人笔试历年参考题库附带答案详解
- 2026届三一重能全球校园招聘正式启动笔试历年参考题库附带答案详解
- 2025青岛高新区投资开发集团有限公司人员招聘笔试笔试历年参考题库附带答案详解
- 2025贵州毕节市金沙县国有资本投资运营集团有限公司招聘经理层高级管理人员(财务总监)笔试历年参考题库附带答案详解
- 2025浙江宁波象山县种子有限公司第一期招聘工作人员1人笔试历年参考题库附带答案详解
- 2025河南郑州中建深铁轨道交通有限公司招聘笔试历年参考题库附带答案详解
- 2025春中化集团招聘辅材材料开发工程师(江苏扬州)笔试历年参考题库附带答案详解
- 2025广西凌云县振凌旅游投资经营有限责任公司招聘6人笔试历年参考题库附带答案详解
- 2025年甘肃省金昌市金粟粮食储备有限公司招聘工作人员笔试历年参考题库附带答案详解
- 2025年崇义县中科航翼低空经济发展有限公司招聘5人笔试历年参考题库附带答案详解
- 《基础护理学(第七版)》考前强化模拟练习试题库500题(含答案)
- 《水电工程水生生态调查与评价技术规范》(NB-T 10079-2018)
- 航空公司招聘笔试行测题
- 闵福德的中译英历程和译介理念
- 化工基础安全知识培训资料全人力资源
- 部编版语文六年级上册二类字词语
- JJG 945-2010微量氧分析仪
- “多规合一”实用性村庄规划质检软件建设方案
- GB/T 16770.1-2008整体硬质合金直柄立铣刀第1部分:型式与尺寸
- 义务教育体育与健康课程标准(2022年版)
- 湖南省乡镇卫生院街道社区卫生服务中心地址医疗机构名单目录
评论
0/150
提交评论