数据结构与算法python-第二章线性表(2)

主要内容:(链接表/链接表的变形/应用)

链接表结构,基本技术,基本操作,加入和删除元素,操作的复杂性,Python 实现,结点类,单链表类,继承/基类/派生类,带尾结点引用的单链表

一、顺序表的另一种组织形式——链接表

1.如果一个表在使用中经常需要修改结构,用顺序表实现就不很方便,操作代价可能很高,根源在于元素存储的集中方式和连续性

2.线性表实现的两个基本需要:

(1)能够找到表中的首元素(2)从表里的任一个元素出发,可以找到它之后的下一个元素

3.基于链接结构可以实现线性表,用链接显式地表示元素之间的顺序关联。

二、单链表

1.掌握一个单链表,需:

(1)找到表的首元素(表里保存的数据)(2)还可以找到表中下一结点的位置

2.表头变量:保存着链表第一个结点的标识(链接)的变量


3.单链表结点的形式(链接域保存下一结点的标志)


4.一个具体的表由一些具体的结点构成:

(1)每个结点都有自己的标识(链接)

(2)结点之间通过结点链接建立起顺序联系

(3)给表的最后一个结点(表尾结点)的连接设置一个不会作为结点对象标识的值(Python里自然应该用到None),称为空链表。

5.实现算法时,只需关心链表的逻辑结构(链表的操作只需根据链表的逻辑结构考虑和实现)

6.单链表操作:基本操作

(1)创建空链表:只需将表头变量设置为空链接,在python里将其设置为None

(2)删除链表:丢弃表的所有结点,与具体环境有关:在python中将表指针设为Nnoe

(3)判断表是否为空:将表头变量的值与空链接比较,在python里检查其值是否为Nnoe

(4)判断表是否满:链接表不会满,除非存储空间用完

7.单链表操作:加入元素

(1)无需移动已有数据,只需为新数据安排一个新结点,把新结点连接在表里所需的位置,通过修改链接,改变表的结构。

(2)首端加入:


(3)尾端加入:


(3)定位加入:


8.单链表操作:删除元素

(1)首端删除:直接修改表头指针,使之引用当时表头结点的下一个结点

(2)尾端删除:找到倒数第二个结点,将其链接域设置为空链接

(3)定位删除:找到要删除元素所在结点的前一结点,修改它的链接域将要求删除的结点从表中去掉


9.单链表操作:扫描和遍历

(1)许多操作中需要扫描表里一个个结点,可能检查其中的元素,这种操作的过程称为遍历,顺序检查一个数据结构中的所有元素。

10.单链表操作:复杂性



11.单链表的变形:带尾结点引用


注意:新设计的链表与前面单链表结构相似,结构变化应该只影响到表的变动操作,费变动操作不需要修改。






猜你喜欢

转载自blog.csdn.net/shuwenting/article/details/79752616