- 1、本文档共48页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
数据结构 第二章 线 性 表 2.1 线性表的定义及操作 2.2 线性表的顺序存储及操作实现 2.3 线性表的链式存储及操作实现 2.4 顺序表与链表的比较 二. 线性表的基本运算 2.2 线性表的顺序存储结构及操作实现 1. 在线性表的第i个位置上插入一个新的数据元素 算法思路: 算法框架: 算法: 时间复杂度分析 时间复杂度的分析 四. 线性表的顺序存储结构的特点 三. 单链表的有关操作 求线性表的长度。 建立一个线性链表。 在线性链表中插入一个新的结点。 从线性链表中删除一个结点。 从线性链表中检索一个结点。 将两个线性链表合并为一个线性链表。 …… 插入过程: 一. 双向链表的构造 二. 双向链表的插入 算法框架 算法 三. 双向链表的删除 算法 思考 q list 3 . 在线性链表中由指针q 指的链结点之后 插入一个数据信息为item 的链结点 被插入链结点 item p p-link = q-link; q-link = p; 算 法 Void InsertLink(struct node *list, struct node *q, char ch ) { p=(struct node *)malloc(sizeof(struct node)); //申请一个新结点 p-data=ch; //将ch 送新结点的数据域 if (list==NULL) { //若原链表为空// list=p; p-link=NULL; } else { //若原链表为非空 p-link=q-link; q-link=p; } } r q ^ list 4. 从非空线性链表中删除q指的链结点 q ^ list 循找q的前趋:r?link(r) r r 修改链域:r-link = q-link 说明:1此时需要释放q所占的空间,free(q)。 2 对于q处于链表头时,需要单独处理。 Void DeleteNode (struct node *list, struct node *q ) { if (q 是头结点) // 当删除链表的第一个结点 // 直接修改 else { //不是头结点 //查找q的直接前趋结点 // 如果查找不成功 // 报告出错 // 否则,证明查找成功,那么修改链域 } free(q); // 释放被删除结点的存储空间 } 算 法框架 Void DeleteNode (struct node *list, struct node *q ) { if (q == list) // 当删除链表的第一个结点 list = q-link; else { r = list; while ( r-link != q r-link != Null) r=r-link; // 移向下一个链结点 // 寻找q结点的直接前驱r if (r-link = Null) { printf(“There is no this node !” ); return; } else r-link = q-link; } free(q); // 释放被删除结点的存储空间 } 算 法 所谓双向链表是
您可能关注的文档
最近下载
- 沪教版四年级下册数学《期末考试试卷》(含答案).pdf VIP
- 医院污水处理设备安装施工组织设计.doc
- 睡眠呼吸暂停综合征病人护理.ppt
- 关于绑架的小故事-绑架关起来的故事.docx
- 2019年湖北省荆州市中考物理真题及参考答案.pdf VIP
- 人教版七年级下册同步句子衡水体英语字帖.pdf
- 一年级语文考试质量分析报告.ppt
- 医学卫生高级职称考试胸心外科(正、副高)测试题库(含答案).pdf
- 2024年高考港澳台华侨生模拟考试地理试卷试题(含答案详解).pdf VIP
- EN 50382-1-2008-A1-2013铁路设施 — 具有特殊防火性能的铁路车辆高温电力电缆 — 第 1 部分:一般要求(中文版).doc
文档评论(0)