一、相关概念
1、线性表(Linear list)是最简单且最常用的一种数据结构。这种结构具有下列特点:存在一个唯一的没有前驱的(头)数据元素;存在一个唯一的没有后继的(尾)数据元素;此外,每一个数据元素均有一个直接前驱和一个直接后继数据元素。
线性表L是n(n≥0)个具有相同属性的数据元素a1,a2,a3,…,an组成的有限序列,其中序列中元素的个数n称为线性表的长度。当n=0时称为空表,即不含有任何元素。
常常将非空的线性表(n>0)记作: (a1,a2,…an)
这里的数据元素 ai(1≦i≦n)只是一个抽象的符号,其具体含义在不同的情况下可以不同。
2、
线性表有两种基本的存储结构:顺序存储结构和链式存储结构。
3、顺序表具有以下两个基本特点:
(1) 线性表的所有元素所占的存储空间是连续的。
(2) 线性表中各数据元素在存储空间中是按逻辑顺序依次存放的。
4、线性表的链式存储
线性表的链式存储结构就是用一组任意的存储单元(可以是不连续的)存储线性表的数据元素。对线性表中的每一个数据元素,都需用两部分来存储:一部分用于存放数据元素值,称为数据域;另一部分用于存放直接前驱或直接后继结点的地址(指针),称为指针域,称这种存储单元为结点。
5、循环链表
循环链表(Circular Linked List)是另一种形式的链式存储结构。它将单链表中最后一个结点的指针指向链表的头结点,使整个链表头尾相接形成一个环形。
6、双向链表
双向链式是用两个指针表示结点间的逻辑关系。即增加了一个指向其直接前驱的指针域,这样形成的链表有两条不同方向的链,前驱和后继,因此称为双链表。
typedef struct DNode{
ElemType data;
struct DNode *prior;
struct DNode *next;
}Dnode,*DuLinkList;
二、C语言描述
1、线性表的顺序表示
2、线性表的链式存储表示