数据结构与算法(线性表)

详细内容看课本吧

第二章线性表

线性表是一种最简单的线性结构。

基本特征:

线性结构是一个数据元素的有序(次序)集

  1. 集合中必存在唯一的一个“第一元素”
  2. 集合中必存在唯一的一个“最后元素”
  3. 除最后元素在外,均有唯一的后继
  4. 除第一元素之外,均有唯一的前驱

在长度为n的线性表中插入一个元素所需移动元素的的期望为

若假定在线性表中任何一个位置上进行插入的概率都是相等的,则移动元素的期望值为:

n/2

在长度为n的线性表中删除一个元素所需移动元素次数的期望值为:

若假定在线性表中任何一个位置上进行删除的概率都是相等的,则移动元素的期望值为:

线性表的链式表示和实现

线性链表:

用一组地址任意的存储单元存放线性表中的数据元素。

元素(数据元素的映像)+指针(只是后继元素存储位置)=结点(表示数据元素或数据元素的映像)

“结点的序列”表示线性表——称作链表

由于此链表的每个结点中只包含一个指针域,故称为线性链表或单链表

以线性表中第一个数据元素a1的存储地址作为线性链表的地址,称作线性链表的头指针。

有时为了操作方便,在第一个结点之前虚加一个“头结点”,以指向头结点的指针作为链表的头指针。

在单链表中删除第 i 个结点的基本操作为:找到线性表中第i-1个结点,修改其指向后继的指针。

q = p->next;   p->next = q->next;  

e = q->data;     free(q);

静态链表:用数组描述的链表起名叫静态链表

循环链表:最后一个结点的指针域的指针又指回第一个结点的链表

和单链表的差别仅在于,判别链表中最后一个结点的条件不再是“后继是否为空”,而是“后继是否头节点”

双向链表的操作特点:

  1. “查询”和单链表相同。
  2. “插入”和“删除”时需要同时修改两个方向上的指针。

本章小结

1.了解线性表的逻辑结构特性是数据元素之间存在着线性关系,在计算机中表示这种关系的两类不同的存储结构是顺序存储结构和链式存储结构。用前者表示的线性表简称为顺序表,用后者表示的线性表简称为链表。

2.熟练掌握这两类存储结构的描述方法,以及线性表的各种基本操作的实现。

3.能够从时间和空间复杂度的角度综合比较线性表两种存储结构的不同特点及其适用场合。

相关推荐