《计算机软件基础》第二章 线性数据结构(2-2-4)链式存储线性表的基本运算

224链式存储线性表的基本运算 特点:用一组任意的存储单元(可以是连续的,也可以是不 连续的)存放线性表的数据元素。线性表最常用的链式存 储方式如下图所示: head 35 41 60 96入 由于线性表的这种链式存储结构通过指针域将所有元 素关联成为一个长链,因此称为单链表
特点:用一组任意的存储单元(可以是连续的,也可以是不 连续的)存放线性表的数据元素。线性表最常用的链式存 储方式如下图所示: head 35 41 60 ….. 96 ∧ 由于线性表的这种链式存储结构通过指针域将所有元 素关联成为一个长链,因此称为单链表。 2.2.4 链式存储线性表的基本运算

链表中的基本概念: 头指针:存放链表第一个结点内存地址的指针变量,链 表的关键数据; 头结点:为了方便链表操作,在链表的第一个实际结点 之前附设的结点,该结点只使用指针域; 首元结点:链表中的第一个实际结点; a a a 首元 头指针结点 不带头结点的单链表 head a 2 3 an∧ 头结点 带头结点的单链表
❖链表中的基本概念: • 头指针:存放链表第一个结点内存地址的指针变量,链 表的关键数据; • 头结点:为了方便链表操作,在链表的第一个实际结点 之前附设的结点,该结点只使用指针域; • 首元结点:链表中的第一个实际结点; head a1 a2 a3 ….. an ∧ 带头结点的单链表 a1 a2 a3 ….. an ∧ 不带头结点的单链表 head 头指针 头结点 首元 结点

线性表的链式存储结构可用C语言中的“结构指针”来描 述 struct nodetype Elem Type data /*data数据项用于存放结点的数据值* struct nodetype米next /*next数据项存放下一个结点的指针米/ data next 注:后面讨论具体算法实现时,以 ElemType为整型为例 进行介绍,即有 typedef Elem Type int
struct nodetype { ElemType data; /*data数据项用于存放结点的数据值*/ struct nodetype *next; /*next数据项存放下一个结点的指针*/ } ; • 线性表的链式存储结构可用C语言中的“结构指针”来描 述 • 注:后面讨论具体算法实现时,以ElemType为整型为例 进行介绍,即有typedef ElemType int。 data next

2241单链表的初始化运算 初始化操作是建立一个空链表。即链表中仅有 个头结点,且头结点的指针域为空。 head ∧带头结点的空链表 具体实现过程如下: 第一步:申请头结点空间,用head变量记下头结点空间 的内存地址; 第二步:给头结点的指针数据项(next数据项)赋值为 空指针。 第三步:将单链表的头指针(head变量的值)返回给 主调函数
•具体实现过程如下: 第一步:申请头结点空间,用head变量记下头结点空间 的内存地址; 第二步:给头结点的指针数据项(next数据项)赋值为 空指针。 第三步:将单链表的头指针(head变量的值)返回给 主调函数。 初始化操作是建立一个空链表。即链表中仅有 一个头结点,且头结点的指针域为空。 head ∧ 带头结点的空链表 2.2.4.1 单链表的初始化运算

2241单链表的初始化运算 初始化操作是建立一个空链表。即链表中仅有 个头结点,且头结点的指针域为空。 head ∧带头结点的空链表 具体算法如下: typedef struct nodetype nodetype nodetype*k initiO inodetype * head head=(nodetype*)malloc(sizeof(nodetype)) /*为头结点申请空间*/ if (head! =NULL) head->next=NULL return(head) /*将头结点的指针域初始化为NULL米/
具体算法如下: typedef struct nodetype nodetype; nodetype* initl() {nodetype *head; head=(nodetype*)malloc(sizeof(nodetype)); /*为头结点申请空间*/ if(head!=NULL) head->next=NULL; return(head); /*将头结点的指针域初始化为NULL*/ } 初始化操作是建立一个空链表。即链表中仅有 一个头结点,且头结点的指针域为空。 head ∧ 带头结点的空链表 2.2.4.1 单链表的初始化运算

2242单链表的创建运算 创建单链表方法有两种:尾接法和头插法 尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 p 尾结点 head a 2 k ∧
尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 ···· · head a1 a2 ak ∧ 尾结点 p 2.2.4.2 单链表的创建运算 创建单链表方法有两种:尾接法和头插法

2242单链表的创建运算 创建单链表方法有两种:尾接法和头插法 尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 p 尾结点 head a 2 k ∧ 新结点 申请新结点空间
尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 2.2.4.2 单链表的创建运算 创建单链表方法有两种:尾接法和头插法。 ···· · head a1 a2 ak ∧ 尾结点 新结点 申请新结点空间 p s

2242单链表的创建运算 创建单链表方法有两种:尾接法和头插法 尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 p 尾结点 head a 2 k ∧ 新结点 对其data数据项进行初始化 a
尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 2.2.4.2 单链表的创建运算 创建单链表方法有两种:尾接法和头插法。 ···· · head a1 a2 ak ∧ 尾结点 新结点 ak+1 对其data数据项进行初始化 p s

2242单链表的创建运算 创建单链表方法有两种:尾接法和头插法 尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 p 尾结点 head a 2 k ∧ 对其next数据项进行初始化,使之为 新结点 空NULL ak+∧
尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 2.2.4.2 单链表的创建运算 创建单链表方法有两种:尾接法和头插法。 ···· · head a1 a2 ak ∧ 尾结点 新结点 ak+1 ∧ 对其next数据项进行初始化,使之为 空NULL p s

2242单链表的创建运算 创建单链表方法有两种:尾接法和头插法 尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 p 尾结点 head a 2 k 新结点 将新结点链接到链表尾结点之后,即 ak+∧ p→next=s;
尾接法:从空链表开始,将各结点从链表的尾部依次链 接到链表中;由于该方法是将数据元素从链表的尾部接入, 因此,需用一个变量记住当前尾结点,修改尾结点的指针 域使其指向新结点。 2.2.4.2 单链表的创建运算 创建单链表方法有两种:尾接法和头插法。 ···· · head a1 a2 ak 尾结点 新结点 ak+1 ∧ 将新结点链接到链表尾结点之后,即 p->next=s; p s
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《计算机软件基础》第四章(4-4)哈希查找.ppt
- 《计算机软件基础》第一章 小结.ppt
- 《计算机软件基础》第一章 软件工程(1-7)软件测试.ppt
- 《计算机软件基础》第一章 软件工程(1-6)编码.ppt
- 《计算机软件基础》第一章 软件工程(1-5)详细设计.ppt
- 《计算机软件基础》第一章 软件工程(1-4)系统设计.ppt
- 《计算机软件基础》第一章 软件工程(1-3)需求分析.ppt
- 《计算机软件基础》第一章 软件工程(1-2)软件定义阶段.ppt
- 《计算机软件基础》第一章 软件工程(1-1)软件工程概述.ppt
- 《计算机软件基础》第一章 软件工程(1-8)维护.ppt
- 《计算机软件基础》第四章 查找与排序(4-7)简单选择排序.ppt
- 《计算机软件基础》第四章 查找与排序(4-8)多关键字排序(2/2).ppt
- 《计算机软件基础》第四章 小结.ppt
- 《计算机软件基础》第四章 查找与排序(4-8)二叉排序树的查找(1/2).ppt
- 《计算机软件基础》第四章 查找与排序(4.1-4.2)查找与排序概述.ppt
- 《计算机软件基础》第四章 查找与排序(4.6.2)快速排序.ppt
- 《计算机软件基础》第四章 查找与排序(4.5-4.6.1)直接插入排序.ppt
- 《计算机软件基础》第三章 小结.ppt
- 《计算机软件基础》第二章 小结.ppt
- 《计算机软件基础》第三章 非线性数据结构(3-1)多维数组.ppt
- 《计算机软件基础》第三次上机作业.ppt
- 《计算机软件基础》第四次上机作业.ppt
- 《计算机软件基础》第一次上机作业.ppt
- 《计算机软件基础》第二次上机作业.ppt
- 《计算机软件基础》第五次上机作业.ppt
- 《计算机软件基础》第六次上机作业.ppt
- 《计算机软件基础》补充题目.doc
- 《计算机软件基础》第八次上机作业.ppt
- 《计算机软件基础》第九次上机作业.ppt
- 《计算机软件基础》第六次上机作业.ppt
- 《2009年二级C语言资料》2008年9月全国计算机等级考试二级C语言试卷(含答案).doc
- 《2009年二级C语言资料》2008年4月等级考试二级C语言真题(完整版,含参考答案).rtf
- 《2009年二级C语言资料》VC6.0 环境下上机考试系统的使用.doc
- 徐州工程学院:《C程序设计》实验教学任务书.doc
- 《2009年二级C语言资料》全国c模拟试卷(6套含上机).doc
- 《2009年二级C语言资料》1二级C填空题题目.doc
- 《2009年二级C语言资料》2二级C改错题题目.doc
- 《2009年二级C语言资料》3二级编程题题目.doc
- 《2009年二级C语言资料》4填空题和改错题答案.doc
- 《2009年二级C语言资料》全国二级公共基础.doc