中国高校课件下载中心 》 教学资源 》 大学文库

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

文档信息
资源类别:文库
文档格式:PPT
文档页数:28
文件大小:479.5KB
团购合买:点击进入团购
内容简介
《数据结构》课程教学资源(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 不带头结点的单链表:

共28页,试读已结束,阅读完整版请下载
刷新页面下载完整文档
VIP每日下载上限内不扣除下载券和下载次数;
按次数下载不扣除下载券;
注册用户24小时内重复下载只扣除一次;
顺序:VIP每日次数-->可用次数-->下载券;
相关文档