版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单链表完整C语言纯代码带头结点的单链表 单链表带头结点#include #include /*带头结点的单链表的操作在该链表中,数据元素是int,我们让头结点的数据域存储链表的实际长度*/*链表节点的类型定义*/struct node int data; struct node *next;/*链表的初始化函数在该函数中要分配头结点存储空间让头指针指向头结点,因此要修改头指针的值,所以传递头指针的地址进来*/void init(struct node *h) struct node *s;s = (struct node *)malloc(sizeof(struct node);if(s=NU
2、LL) return;/*头结点的数据域存储链表的长度*/ s-data=0;s-next=NULL;/*让头指针指向头结点*/ *h = s;/*创立链表,仍然按照逆序创立,从后往前输入元素的值,然后把新结点插入到表头*/void createLink(struct node *h) struct node *s;int n;while(1) scanf(%d,&n); /*根据实际情况判断链表的元素 输入结束 还有一种情况就是找不到适宜的 作为结束标记的值 先让用户输入元素个数, 然后固定字数循环*/ if(n=-1) break; /* 创立新结点 */ s = (struct node
3、 *)malloc(sizeof(struct node); s-data = n; s-next = h-next; /* 新结点放入链表的表头 让头结点的NEXT指向新结点 */ h-next = s; (h-data)+;/*遍历整个链表*/void bianliLink(struct node *h) int k;struct node *p; /*P指向第一个结点*/p=h-next; /*如果定义了链表长度变量,可以使用变量计数,表示处理到链表的最后一个元素如果不定义链表长度变量,就用指针是否指向NULL,判断是否处理到最后一个元素了*/*1.链表长度变量计数*/k=0;while
4、(kdata) /*对元素进行处理这里可以根据需求变更*/printf(%d ,p-data);/*准备处理下一个节点*/p = p-next;k+;/*2.用指针判断是否处理到链表的最后一个元素了*/printf(n);p=h-next;while(p!=NULL) /*处理当前节点*/printf(%d ,p-data);/*准备处理下一个节点*/ p = p-next; printf(n);/*int num:要插入的结点元素的值index: 插入位置: index从1开始编号, 要在Index指定的位置插入数据*/void insertLink(struct node *h,int n
5、um,int index) struct node *p,*s;int k=1;/*插入位置无效,链表长度现在是10,在12包含12之后的位置插入元素,认为地址无效*/if(index(h-data+1) return;s = (struct node*)malloc(sizeof(struct node);if(s=NULL) return;s-data=num;/*让指针p指向头结点*/p = h;/*让指针p移动到待插入位置的前驱结点*/while(knext;k+;s-next=p-next;p-next=s;h-data+;/*index: 删除位置: index从1开始编号, 要删
6、除index所指的位置的元素*/void deleteLink(struct node *h,int index) struct node *p,*s;int k=1;if(indexh-data) return;/*让指针p指向头结点*/ p = h;/*让指针p移动到待删除节点的前驱*/ while(knext;k+;p-next = p-next-next;/*链表删除有可能让你返回删除的节点的值*/ h-data-;/*该方法返回链表的Index位置的元素链表中的数据元素的类型与函数返回值的类型要一致*/int getLink(struct node *h,int index) str
7、uct node *p;int k=1;p = h-next;while(k+next;return p-data;main() struct node *header;init(&header); createLink(header); bianliLink(header);insertLink(header,10,1); bianliLink(header);insertLink(header,11,header-data+1);bianliLink(header);insertLink(header,13,4);bianliLink(header);deleteLink(header,1); bianliLink(header); deleteLink(header,header-data); bianliLink(header);deleteLi
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信息技术选修2 网络基础4.2 物联网的相关技术教学设计
- 初中英语阅读中阅读策略迁移能力培养与理解准确率关系研究教学研究课题报告
- 高中生运用空间分析技术分析郑和下西洋航线航海路线规划的课题报告教学研究课题报告
- 云南省2025云南西双版纳州党政储备人才专项招引(5人)笔试历年参考题库典型考点附带答案详解
- 企业评估标准制定方案
- 企业门禁管理实施方案
- 企业客户回访管理方案
- 小学数学应用题个性化学习成果认证的区块链与人工智能融合策略教学研究课题报告
- 饰面用灰岩矿生产线项目初步设计
- 企业招聘数据分析
- 韩非子导读课件
- 学生课堂表现观察记录表模板
- 实施指南(2025)《DL-T5187.3-2012 火力发电厂运煤设计技术规程第 3 部分》
- DB65-T 4877-2024 学校食堂“互联网+明厨亮灶”建设规范
- 2024年下半年成都铁路文化传媒有限责任公司校招笔试题带答案
- 【MOOC答案】《电子线路设计、测试与实验(二)》(华中科技大学)章节作业慕课答案
- 特殊困难老年人家庭适老化改造工作台账
- 标准化厂房总体设计方案
- 关键设备检修管理制度
- 北师大版五年级数学下册 第八单元 1复式条形统计图 同步练习(含答案)
- DB37T 5069-2016 太阳能热水系统安装及验收技术规程
评论
0/150
提交评论