数据结构简明教程(第2版)微课版
上QQ阅读APP看书,第一时间看更新

小结

(1)线性表是由nn≥0)个数据元素组成的有限序列,所有元素类型相同,元素之间呈现线性关系,即除开始元素外,每个元素只有唯一的前驱,除终端元素外,每个元素只有唯一的后继。

(2)顺序表采用数组存放元素,既可以顺序查找(依序查找),也可以随机查找(对于给定的序号i,在常量时间内找到对应的元素值)。

(3)分配给顺序表的内存单元地址必须是连续的。

(4)从一个长度为n的顺序表中删除第i个元素(1≤in)时,需向前移动ni个元素,所以删除算法的时间复杂度为On)。

(5)在一个长度为n的顺序表中插入第i个元素(1≤in+1)时,需向后移动ni+1个元素,所以插入算法的时间复杂度为On)。

(6)链表是由若干结点构成,结点的次序由地址确定,并通过指针域反映数据的逻辑关系。

(7)一个链表的所有结点的地址既可以连续,也可以不连续。

(8)对链表的查找是按序进行的,即只能顺序查找,不能随机查找。

(9)链表中插入或删除结点不需要数据移动,但需要调整指针。

(10)在单链表中,存储每个结点有两个域,一个是数据域,另一个是指针域,指针域指向该结点的后继结点。

(11)在带头结点的单链表中,通常用头结点指针标识整个单链表;在不带头结点的单链表中,通常用首结点指针标识整个单链表。

(12)单链表只能从前向后一个方向扫描。

(13)在单链表中,插入一个新结点需修改两个指针,删除一个结点需修改一个指针。

(14)双链表可以从前向后或从后向前两个方向扫描。

(15)在双链表中,插入一个新结点需修改4个指针,删除一个结点需修改两个指针。

(16)循环链表分为循环单链表和循环双链表,循环单链表的结点构成一个查找环路,循环双链表的结点构成两个查找环路。

(17)在循环单链表中任何一个结点的指针域都不为空。

(18)在循环双链表中,删除最后一个结点,其算法的时间复杂度为O(1)。

(19)线性表除了顺序表和链表两类存储结构外,还可以设计成静态链表,静态链表采用数组存储,其中元素采用链表方式操作。静态链表不再具有随机查找特性。

(20)有序表是一种元素按值有序排序的线性表,可以采用顺序表或链表存储。对于有序表的归并,可以采用二路或多路归并算法提高效率。