《数据结构》--第二章 线性表.ppt
《《数据结构》--第二章 线性表.ppt》由会员分享,可在线阅读,更多相关《《数据结构》--第二章 线性表.ppt(71页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第第2章章 线性表线性表第第2章章 线性表线性表学习目的要求学习目的要求:1.线性表的定义和线性表的特征。线性表的定义和线性表的特征。2.线性表的顺序存储结构及其算法的实现。线性表的顺序存储结构及其算法的实现。3.线性链表的描述及其算法的实现。线性链表的描述及其算法的实现。4.循环链表和双向循环链表的描述。循环链表和双向循环链表的描述。5.数组的顺序存储和矩阵的压缩存储的描述。数组的顺序存储和矩阵的压缩存储的描述。2.1 线性表的基本概念线性表的基本概念2.2 线性表的顺序存储结构及其算法线性表的顺序存储结构及其算法2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算2.4 算法应
2、用举例算法应用举例2.5 数组数组第第2章章 线性表线性表2.1 线性表的基本概念线性表的基本概念 线性表是一种最简单、最基本的数据结构,它的线性表是一种最简单、最基本的数据结构,它的使用非常广泛。这种数据结构的数据元素之间是一对使用非常广泛。这种数据结构的数据元素之间是一对一的关系,即线性关系,故称为线性表。一的关系,即线性关系,故称为线性表。2.1.1 线性表的定义线性表的定义线性表(线性表(linear list)是由)是由 n个数据元素组成的个数据元素组成的有限序列有限序列线性表可以用一个标识符来命名,如果用线性表可以用一个标识符来命名,如果用A来表示线性来表示线性表,则表,则:A=(
3、a1 ,a2 ,ai ,an )线性表是一种非常典型的线性结构,用二元组可以表线性表是一种非常典型的线性结构,用二元组可以表示成示成:S=(D,R)D=a1,a2,ai,an R=,在线性表中,有且仅有一个开始结点,或称表头结在线性表中,有且仅有一个开始结点,或称表头结点点a1,没有直接前驱,只有一个直接后继,没有直接前驱,只有一个直接后继;有且仅有有且仅有一个终端结点,或称表尾结点一个终端结点,或称表尾结点an,它没有直接后继,它没有直接后继,只有一个直接前驱只有一个直接前驱;其他结点其他结点ai(当(当1 i data。(2)修改有关结点的指针域。修改有关结点的指针域。3.单链表上的插入运
4、算单链表上的插入运算2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算3.单链表上的插入运算单链表上的插入运算2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算q-data=x;q-next=p-next;p-next=q;4.单链表上的删除运算单链表上的删除运算 删除单向链表中的结点删除单向链表中的结点x,并由系统收回其占用的存储,并由系统收回其占用的存储空间,其过程如下空间,其过程如下:(1)设定两个指针设定两个指针p和和q,p指针指向被删除结点,指针指向被删除结点,q为跟为跟踪指针,踪指针,指向被删除结点的直接前驱结点指向被删除结点的直接前驱结点。(2)p从表
5、头指针从表头指针 head 指向的第一个结点开始依次向后指向的第一个结点开始依次向后搜索。当搜索。当p data 等于等于x时,被删除结点找到。时,被删除结点找到。(3)修改)修改p的前驱结点的前驱结点q的指针域。使的指针域。使p结点被删除,然后结点被删除,然后释放存储空间。释放存储空间。2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算4.单链表上的删除运算单链表上的删除运算2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算q-next=p-next;free(p);5.输出单链表输出单链表若要将单链表按其逻辑顺序输出,就必须从若要将单链表按其逻辑顺序输出,就必须
6、从头到尾访问单链表中的每一个结点。头到尾访问单链表中的每一个结点。2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算如果将单链表最后一个结点的指针指向头结点,使链如果将单链表最后一个结点的指针指向头结点,使链表形成一个环形,此链表就称为表形成一个环形,此链表就称为循环链表(循环链表(Circular Link List)。)。2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算2.3.3 循环链表结构循环链表结构循环链表中,循环链表中,*p是最后一个结点的判断条件:是最后一个结点的判断条件:p-next=head在循环链表中,可以从表中任一结点出发找到在循环链表中,可
7、以从表中任一结点出发找到它的直接前驱,而不必从它的直接前驱,而不必从head出发。出发。2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算2.3.3 循环链表结构循环链表结构1.双向链表的基本概念双向链表的基本概念 在循环链表的结点中再增加一个指针域,在循环链表的结点中再增加一个指针域,这个指针直接指向该结点的直接前驱。这样,这个指针直接指向该结点的直接前驱。这样,链表中一个结点就有了两个指针域,我们把这链表中一个结点就有了两个指针域,我们把这样的链表称样的链表称为双向链表为双向链表。2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算2.3.4 双向链表双向链表结构
8、结构如果每条链都构成一个循环链表,则称这样如果每条链都构成一个循环链表,则称这样的链表为的链表为双向循环链表双向循环链表。2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算双向链表的重要特点:双向链表的重要特点:2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算(p-next)-prior=p=(p-prior)-nextpriorpnextprior a2nextprior a1nextp-next(p-next)-priorp-prior(p-prior)-next2.插入运算插入运算在双向链表的在双向链表的p结点之后插入新结点结点之后插入新结点q。2.3 线性
9、表的链式存储结构及其运算线性表的链式存储结构及其运算q-prior=p;q-next=p-next;(p-next)-prior=q;p-next=q;3.删除运算删除运算将双向链表中的将双向链表中的 p 结点删除。结点删除。2.3 线性表的链式存储结构及其运算线性表的链式存储结构及其运算(p-prior)-next=p-next;(p-next)-prior=p-prior;free(p);例例2.1 有两个线性表有两个线性表A和和B,都是循环链表存储结构,都是循环链表存储结构,两个链表头指针分别为两个链表头指针分别为 head1和和head2,将,将B链表链表链接到链接到A链表的后面,链表
10、的后面,合并成一个链表。合并成一个链表。2.4 算法应用举例算法应用举例2.4 算法应用举例算法应用举例找到两个找到两个链表的最后链表的最后一个结点一个结点 p-next=head2-next q-next=head1free(head2)数组是线性表的推广,也是一种常用的数据结构。数组是线性表的推广,也是一种常用的数据结构。数组是由一组具有相同特性的数据元素组成的。数组是由一组具有相同特性的数据元素组成的。数据元素在数组中的相对位置是由其下标来确定的。数据元素在数组中的相对位置是由其下标来确定的。一旦定义了数组,它的维数和元素数目也就确定了,一旦定义了数组,它的维数和元素数目也就确定了,而且
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 数据结构-第二章 线性表 第二 线性
限制150内