版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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年度学校食堂食品安全与营养保障承包协议3篇
- 2024年物业与业主社区文化活动组织服务协议3篇
- 不含括号的三步混合运算教学反思
- 语义网络与知识推理-洞察分析
- 循环经济下电动工具产品创新-洞察分析
- 2024年度环保项目投资担保合同3篇
- 2024年物业服务企业物业安全管理责任承诺协议3篇
- 采购合同跟踪的实施策略3篇
- 采购合同流程的信息化管理3篇
- 2024年单位房屋买卖合同:带车位及配套设施维修保养合同模板3篇
- 会计凭证附件管理制度范文
- 保洁突发事件应急预案
- 三农领域法律法规解读手册
- 【人教版】《劳动教育》三下 劳动项目六 清理电冰箱 课件
- 全球半导体制造类eda行业发展白皮书-沙利文-2024120
- 人教版六年级上册数学-分数乘除法-应用题专练
- 原始地形测量合同模板
- 江西省赣州市2022-2023学年四年级上学期期末数学试卷
- 凿壁偷光儿童故事绘本
- 《THPJC-2型机床电气技能实训考核鉴定装置》-X62W万能铣床电气线路分析及故障排除与分析
- 《记念刘和珍君》高中语文选择性必修中册
评论
0/150
提交评论