线性表的定义和特点
线性表:由n个数据特性相同的元素构成有限的序列。(n=0,称之为空表)
线性表包含顺序表示和实现、链式表示和实现。
插入和删除平均移动:n / 2 (可能是小数)
2.4.1 线性表的顺序表示和实现
线性表的顺序:用一组地址连续的存储单元,存储数据元素,这种表示也称为顺序存储结构或顺序映像。
线性表中数据可以随机存取,所以,以线性表的顺序存储结构是一种随机存取结构。
2.5 线性表的链式表示和实现
单链表是非随机存取,也称为顺序存取的存储结构。
节点包含两个域:数据域和指针域。
数据域:存储数据信息。
指针域:存储下一个节点位置。
下面对首元节点、头节点、头指针加以说明:
首元节点:存储第一个数据元素的节点。
头节点:数据域可以不存储信息,指针域指向首元节点。
头指针:指向链表中第一个节点。(有头节点指头节点,没头节点指首元节点。)
2.6 顺序表和链表的比较
2.6.1 空间性能
存储密度:数据元素本身占用存储量 / 节点结构占用存储量(就是空间利用率)
顺序表的存储空间:可能出现闲置或溢出,没有额外存储,存储密度为1.
链表的存储空间:不会出现闲置或溢出,需要额外存储节点,存储密度小于1
2.6.2 时间性能
顺序表:随机存取O(1),插入删除O(n)
链表:顺序存取O(n),确定插入,删除位置后O(1).
创建一个包括n个结点的有序单链表的时间复杂度是( )。
A.O(1) B.O(n) C.O(n2) D.O(nlog2n)
答案:C
解释:单链表创建的时间复杂度是O(n),而要建立一个有序的单链表,则每生成一个新结点时需要和已有的结点进行比较,确定合适的插入位置,所以时间复杂度是O(n2)。
9. (单选题, 2分)在含有头结点的循环链表中,将头指针改设为尾指针(rear)后,其首元结点和尾结点的存储位置分别是
- A. rear和rear→next→next
- B. rear→next和rear
- C. rear→next→next和rear
- D. rear和rear→next
- 含有头结点的循环链表,将头指针改设为尾指针,rear->next指向‘头结点’rear->next->next指向首元节点。
20. (单选题, 2分)在一个长度为n的带头节点的单链表h上,设有尾指针r,则执行()操作和链表的长度有关。
- A. 删除单链表中的第一个元素
- B. 删除单链表中最后一个元素
- C. 在单链表第一个元素前插入一个新元素
- D. 在单链表最后一个元素后插入一个新元素
- 先要删除最后一个元素,需要找到第n-1元素,设置尾指针为n-1.