JAVA数据结构第二章 线性表B.ppt
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《JAVA数据结构第二章 线性表B.ppt》由会员分享,可在线阅读,更多相关《JAVA数据结构第二章 线性表B.ppt(36页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、上堂课要点回顾上堂课要点回顾1.1.线性结构线性结构(包括表、栈、队、数组)的定义和特点:包括表、栈、队、数组)的定义和特点:仅一个首、尾结点,其余元素仅一个直接前驱和一个直仅一个首、尾结点,其余元素仅一个直接前驱和一个直接后继。接后继。2.2.线性表线性表逻辑结构逻辑结构:“一对一一对一”或或 1:11:1存储结构存储结构:顺序、链式:顺序、链式运运 算算 :修改、插入、删除、查找:修改、插入、删除、查找3.3.顺序存储顺序存储特征:特征:逻辑上相邻,物理上也相邻;逻辑上相邻,物理上也相邻;优点:优点:随机查找快随机查找快 O(1)O(1)缺点:缺点:插入、删除慢插入、删除慢 O(n)O(n
2、)线性表的逻辑结构线性表的逻辑结构 线性表的顺序存储及实现线性表的顺序存储及实现 线性表的链接存储及实现线性表的链接存储及实现 顺序表和单链表的比较顺序表和单链表的比较 线性表的其他存储及实现线性表的其他存储及实现本章的基本内容是:本章的基本内容是:2.3 2.3 线性表的链式存储和实现线性表的链式存储和实现2.3.1 链表的存储表示链表的存储表示2.3.2 链表的操作实现链表的操作实现2.3.3 链表的算法效率分析链表的算法效率分析本节小结本节小结链表:链表:线性表的链接存储结构。线性表的链接存储结构。存储思想:存储思想:用一组用一组任意任意的存储单元存放线性表的元素。的存储单元存放线性表的
3、元素。2.3.1 链表的存储表示链表的存储表示静态存储分配静态存储分配 顺序表顺序表事先确定容量事先确定容量 链链 表表动态存储分配动态存储分配 运行时分配空间运行时分配空间 连续连续不连续不连续零散分布零散分布0200020803000325存储特点:存储特点:1.1.逻辑次序和物理次序逻辑次序和物理次序 不一定不一定相同。相同。2.2.元素之间的逻辑关系元素之间的逻辑关系 用用地址地址表示。表示。例:例:(a1,a2,a3,a4)的存储示意图的存储示意图1、链表的存储特点链表的存储特点 a10200 a20325 a30300 a4 链表是由若干结点构成的;每个结点结构有两个部链表是由若干
4、结点构成的;每个结点结构有两个部分组成:分组成:0200020803000325 a10200 a20325 a30300 a4 结点结点数据域数据域地址域地址域data:存储数据元素:存储数据元素next:存储指向后继结点的地址:存储指向后继结点的地址 data next如单链表的结点结构:如单链表的结点结构:数据域数据域地址域地址域2 2、有关的术语有关的术语1)结点:)结点:数据元素的存储映像。由数据域和地址域两数据元素的存储映像。由数据域和地址域两部分组成;部分组成;2)链表:)链表:n 个结点由个结点由地址地址链链组成一个链表。它是线组成一个链表。它是线性表的链式存储映像,称为线性表
5、的链式存储结构。性表的链式存储映像,称为线性表的链式存储结构。3)单链表、双链表、多链表、循环链表)单链表、双链表、多链表、循环链表:结点只有一个地址域的链表,称为结点只有一个地址域的链表,称为单链表单链表或或线性链线性链表表;有两个地址域的链表,称为有两个地址域的链表,称为双链表双链表;有多个地址域的链表,称为有多个地址域的链表,称为多链表多链表;首尾相接的链表称为首尾相接的链表称为循环链表循环链表。a1heada2anhead头指针头指针是是指向指向链表中链表中第一个结点第一个结点(或为(或为头结点头结点或或为首为首元结点元结点)的)的地址地址。头结点头结点是在链表的是在链表的首元结点之前
6、附设首元结点之前附设的一个结点;数的一个结点;数据域内只放空表标志或表长等信息据域内只放空表标志或表长等信息;首元结点首元结点是指链表中存储线性表第一个数据元素是指链表中存储线性表第一个数据元素a a1 1。头指针头指针头结点头结点 首结点首结点a14)头指针头指针、头结点头结点和和首结点首结点上例链表的逻辑结构示意图有以下上例链表的逻辑结构示意图有以下两种形式两种形式:a1a2/a4a3Ha1a2/a4a3H区别:区别:无头结点无头结点(链式队列、链栈常用链式队列、链栈常用)有头结点有头结点(链表常用链表常用)答:答:讨论讨论1 1.在链表中设置在链表中设置头结点头结点有什么好处?有什么好处
7、?讨论讨论2 2.如何表示如何表示空表空表?头结点头结点即在链表的首元结点之前附设的一个结点,该结即在链表的首元结点之前附设的一个结点,该结点的数据域中不存储线性表的数据元素,其作用是为了对链表点的数据域中不存储线性表的数据元素,其作用是为了对链表进行操作时,可以对进行操作时,可以对空表、非空表空表、非空表的情况以及对的情况以及对首元结点首元结点进行进行统一处理,编程更方便统一处理,编程更方便,常用头结点。常用头结点。答:答:无头结点时,无头结点时,当头指针的值为空当头指针的值为空时表示空表;时表示空表;有头结点时,有头结点时,当头结点的地址域为空当头结点的地址域为空时表示空表。时表示空表。头
8、指针头指针头指针头指针头结点头结点无头结点无头结点有头结点有头结点hhh=NULLH.next=NULLpublic class Node /单链表结点类 public E data;/数据域,保存数据元素 public Node next;/地址域,引用后继结点3、单链表的存储结构定义单链表的存储结构定义 (重点及难点重点及难点)data next1)单链表结点类单链表结点类Node声明:声明:public Node(E data,Node next /构造结点 this.data=data;this.next=next;public Node(E data)this(data,null);
9、public Node()this(null,null);headNodedatanext如何申请一个结点如何申请一个结点?Node p,q;p=new Node(A);q=new Node(B);p.next=q;单链表的头指针head也是一个引用,声明如下:Node head=null;当head=null时,表示空单链表。线性表接口线性表接口LListpublic interface LList/纯性表接口纯性表接口boolean isEmpty();/判断线性表是否为空,若空返回判断线性表是否为空,若空返回trueint length();/返回线性表长度;返回线性表长度;E get(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- JAVA数据结构第二章 线性表B JAVA 数据结构 第二 线性
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内