《数据结构》课程教学资源(PPT课件)第二章 线性表(2.3 单链表)

第2章 线性表2.1线性表2.2顺序表2.3单链表2.4循环单链表2.5双向链表2.6仿真链表
第2章 线性表 2.1 线性表 2.2 顺序表 2.3 单链表 2.4 循环单链表 2.5 双向链表 2.6 仿真链表

线性表线性表的定义线性表是一种可以在任意位置进行插入和删除数据元素操作的、由n(n≥0)个相同类型数据元素ao,ai,a2,…,an-1组成的线性结构
线性表 线性表的定义 线性表是一种可以在任意位置进行插入和删除数据元素操 作的、由n(n ≥ 0)个相同类型数据元素a0 , a1 , a2 , ., an-1 组成的线性结构

线性表抽象数据类型的接口定义如下:interface List3void insert(int i, Object obi);//插入//删除Object delete(int i);//取数据元素Object getData(int i);//求元素个数int getSize();bool isEmpty();
线性表抽象数据类型的接口定义如下: interface List { void insert(int i, Object obj);//插入 Object delete(int i); //删除 Object getData(int i); //取数据元素 int getSize(); //求元素个数 bool isEmpty(); }

顺序表特点:逻辑关系上相邻的两个元素在物理存储位置上也相邻;优点:可以随机存取表中任一元素,方便快捷;缺点:在插入或删除某一元素时,需要移动大量元素需要预先确定数据元素的最大个数。解决问题的思路:改用另一种存储方式:链式存储结构
顺序表特点:逻辑关系上相邻的两个元素在物理存储位置上也 相邻; 优点:可以随机存取表中任一元素,方便快捷; 缺点:在插入或删除某一元素时,需要移动大量元素; 需要预先确定数据元素的最大个数。 解决问题的思路:改用另一种存储方式: 链式存储结构

链式存储结构是用指针把相互直接关联的结点(即直接前驱结点或直接后继结点)链接起来,指针表示一个数据元素逻一个数据元素和一个指辑意义上的存储位置针称为一个结点链式存储结构是基于指针实现的链式存储结构的线性表称为链表。根据结点构造链的方法不同,链表主要有单链表循环单链表和双向链表三种
根据结点构造链的方法不同,链表主要有单链表、 循环单链表和双向链表三种。 链式存储结构是用指针把相互直接关联的结点(即 直接前驱结点或直接后继结点)链接起来。 指针表示一个数据元素逻 辑意义上的存储位置 一个数据元素和一个指 针称为一个结点 链式存储结构是基于指针实现的 链式存储结构的线性表称为链表

2.3单链表单链表的结构2.3.1单链表是构成链表的每个结点只有一个指向直接后继结点的指针。单链表中每个结点的结构:指针域数据元素域或elementnext
2.3.1 单链表的结构 单链表是构成链表的每个结点只有一个指向直 接后继结点的指针。 数据元素域 指针域 或 element next 单链表中每个结点的结构: 2.3 单链表

头指针、头结点和首元结点的区别示意图如下:headaoaian-1首元结点头结点头指针首元结点是指链表中存储线性表首元素a。的结点头结点是在链表的首元结点之前附设的一个结点,它不计入表长度。头指针是指向链表中第一个结点(或为头结点、或为首元结点)的指针;headaoalan-1
头指针、头结点和首元结点的区别 头指针 头结点 首元结点 首元结点是指链表中存储线性表首元素a0的结点。 头结点是在链表的首元结点之前附设的一个结点,它不计入 表长度。 头指针是指向链表中第一个结点(或为头结点、或为首元 结点)的指针; 示意图如下: head a0 a1 . an-1 ^ head a0 a1 . an-1 ^

讨论1:在链表中设置头结点有什么好处?答:头结点即在链表的首元结点之前附设的一个结点,该结点的数据域可以为空,也可存放表长度等附加信息,其作用是为了对链表进行操作时,可以对空表、非空表的情况以及对首元结点进行统一处理,编程更方便讨论2.如何表示空表?答:不带头结点时,当头指针的值为空时表示空表:带头结点时,当头结点的指针域为空时表示空表头指针头指针头结点Λhead有头结点头结点不计入链无头结点表长度!
答: 讨论1. 在链表中设置头结点有什么好处? 讨论2. 如何表示空表? 头结点即在链表的首元结点之前附设的一个结点,该结 点的数据域可以为空,也可存放表长度等附加信息,其作用是 为了对链表进行操作时,可以对空表、非空表的情况以及对首 元结点进行统一处理,编程更方便。 答: 不带头结点时,当头指针的值为空时表示空表; ^ 头指针 无头结点 带头结点时,当头结点的指针域为空时表示空表。 头结点不计入链 表长度! ^ 头指针 头结点 有头结点 head

单链表有带头结点结构和不带头结点结构两种两种单链表的比较:从线性表的定义可知,线性表要求允许在任意位置进行插入和删除。当选用带头结点的单链表时,插入和删除操作的实现方法比不用带头结点单链表的实现方法简单
两种单链表的比较: 从线性表的定义可知,线性表要求允许在任意位置 进行插入和删除。当选用带头结点的单链表时,插入和 删除操作的实现方法比不用带头结点单链表的实现方法 简单。 单链表有带头结点结构和不带头结点结构两种

不带头结点的单链表:data nextheadaAaoai-ln-s.next=p.nextobjp.next=sS如果在首元素之前插入obi,则s.next-headhead=s
0 head a ai . n−1 a ∧ s obj . i−1 a p data next 如果在首元素之前插入obj,则 s.next=head head=s s.next=p.next p.next=s 不带头结点的单链表:
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
- 《数据结构》课程教学资源(PPT课件)第二章 线性表(2.1 线性表 2.2 顺序表).ppt
- 《数据结构》课程教学资源(PPT课件)第九章 查找.ppt
- 《数据结构》课程教学资源(PPT课件)第三章 堆栈和队列(3.3 队列 3.4 优先级队列).ppt
- 《数据结构》课程教学资源(PPT课件)第三章 堆栈和队列(3.1 堆栈 3.2 堆栈的应用).ppt
- 《数据结构》课程教学资源(PPT课件)第七章 图(7.3 邻接矩阵图类 7.4 图的遍历).ppt
- 《数据结构》课程教学资源(PPT课件)第七章 图(7.1 概述 7.2 图的存储结构).ppt
- 《数据结构》课程教学资源(PPT课件)第一章 绪论(华北理工大学:赵爽).ppt
- 《数据结构》课程授课教案(讲稿)第九章 查找 第三节 动态查找.doc
- 《数据结构》课程授课教案(讲稿)第九章 查找 第一节 查找的基本概念 第二节 静态查找.doc
- 《数据结构》课程授课教案(讲稿)第八章 排序 第一节 排序的基本概念 第二节 插入排序 第三节 交换排序.doc
- 《数据结构》课程授课教案(讲稿)第七章 图 第三节 邻接矩阵图类 第四节 图的遍历.doc
- 《数据结构》课程授课教案(讲稿)第七章 图 第一节 概述 第二节 图的存储结构.doc
- 《数据结构》课程授课教案(讲稿)第六章 树和二叉树 第三节 以结点类为基础的二叉树设计.doc
- 《数据结构》课程授课教案(讲稿)第六章 树和二叉树 第一节 树 第二节 二叉树.doc
- 《数据结构》课程授课教案(讲稿)第五章 递归算法.doc
- 《数据结构》课程授课教案(讲稿)第四章 数组、集合和矩阵 第四节 矩阵类 第五节 特殊矩阵 第六节 稀疏矩阵.doc
- 《数据结构》课程授课教案(讲稿)第四章 数组、集合和矩阵 第一节 数组 第二节 向量类 第三节 集合.doc
- 《数据结构》课程授课教案(讲稿)第三章 堆栈和队列 第二节 队列.doc
- 《数据结构》课程授课教案(讲稿)第三章 堆栈和队列 第一节 堆栈.doc
- 《数据结构》课程授课教案(讲稿)第二章 线性表 第四节 循环单链表 第五节 双向链表 第六节 仿真链表.doc
- 《数据结构》课程教学资源(PPT课件)第二章 线性表(2.4 循环单链表 2.5 双向链表 2.6 仿真链表).ppt
- 《数据结构》课程教学资源(PPT课件)第五章 递归算法.ppt
- 《数据结构》课程教学资源(PPT课件)第八章 排序.ppt
- 《数据结构》课程教学资源(PPT课件)第六章 树和二叉树(6.1 树 6.2 二叉树).ppt
- 《数据结构》课程教学资源(PPT课件)第六章 树和二叉树(6.3 以结点类为基础的二叉树设计 6.4 二叉树类 6.5 线索二叉树 6.6 哈夫曼树).ppt
- 《数据结构》课程教学资源(PPT课件)第六章 树和二叉树(6.7 树与二叉树的转换 6.8 树的遍历).ppt
- 《数据结构》课程教学资源(PPT课件)第四章 数组、集合和矩阵.ppt