第二章 线性表
一、顺序表示
1. 线性表是具有相同数据类型的n个数据元素的有限序列。
2. 顺序表最主要的特点是随机访问,顺序表逻辑上相邻的元素物理上也相邻,插入和删除操作都需要移动大量元素。
课后题易错:
- 线性表的顺序存储结构是一种(随机存取的存储结构)。不选(顺序存取的存储结构),因为顺序存取是一种读写方式,并不是指存储方式,有别于顺序存储);
- 顺序表和单链表交换元素顺序的问题:一般来说则线性表效率更佳,为O(1)。但如果交换的是开头两个元素,则效率相等。
二、链式表示
1. 单链表是非随机存取的存储结构。
2. 引入头结点的优点:处理第一个位置的元素和其他位置上的操作一致,无需特殊处理、无论链表是否为空,头指针始终是指向头结点的非空指针,空表和非空表的处理也统一了。
3. 头插法建立单链表,读入数据的顺序和生成链表中的元素的顺序是相反的。
4. 尾插法建立单链表,读入数据的顺序和生成链表中的元素的顺序是一致的。
(可利用上述特性建立递增或递减的链表)
- 尾插法必须增加一个尾指针r,始终指向当前链表的尾结点。
- 循环单链表优点:可以从表中任一结点开始遍历整个链表。
三、静态链表
- 指针的下标是结点的相对地址(数组下标),又称为游标。
- 静态链表结束的标志:next == -1。
四.顺序表和链表的比较
- 顺序表可以顺序存取,也可以随机存取;链表只能从表头顺序存取元素。
(注意区分存取和存储)
- 顺序表在静态存储分配情形下,需要预先分配足够大的存储空间。动态存储分配虽然存储空间可以扩充,但需要移动大量元素,导致效率依然低。
课后题易错:
- 链式存储结构比顺序存储结构能更方便地表示各种逻辑结构。