线性表是数据结构中最简单的一类逻辑结构。线性表是许多常用数据结构的基础,例如栈、队列。
线性表可以基于两种存储结构:
- 顺序存储 – 顺序表
- 链式存储 – 链表
线性表的逻辑特性:除了第一个元素,每个元素有且仅有一个直接前驱;除了最后一个元素,每个元素有且仅有一个直接的后继。
这也是线性表和其他逻辑结构区分开的一个特性。
顺序表
顺序表的特点是表中元素的逻辑顺序和其物理顺序是一样的。
顺序表可以静态分配,也可以动态分配。动态分配时,存储空间是在程序执行时通过动态存储分配语句分配的,一旦数据空间占满,就分配一块更大的空间用以替换原来的存储空间。
顺序表的主要特点是随机访问。
顺序表的存储密度高,每个节点只存储数据元素。
链表
由于顺序表的插入、删除需要操作移动大量的元素,影响了运行的效率,所以引入了线性表的链式存储。
链表由一系列不必在内存中相连的结构组成。每一个结构中均含有表元素和指向包括该元素后继元的结构的Next指针。最后一个单元的Next指针指向NULL。ANSI C规定NULL为0.