一、线性表的概念
1、线性表:是由n个类型相同的数据元素组成的有限序列,记为(a1, a2, …, ai-1, ai, ai+1, …, an)。在线性表中,数据ai-1在ai的前面,ai又在ai+1的前面,我们把ai-1称为ai的直接前驱元素,ai称为ai+1的直接前驱元素。ai称为ai+1的直接后继元素,ai+1称为ai的直接后继元素。
2、线性表有两种存储结构:顺序存储结构和链式存储结构。
3、线性表的抽象数据类型包括数据对象、数据关系、基本操作。
二、线性表的顺序表示与实现
1、线性表的顺序存储结构是一种随机存取的存储结构。
顺序表的优点:
A.无须为表示表中元素之间的关系而增加额外的存储空间。
B.可以快速地存取表中任一位置的元素。
顺序表的缺点:
A.插入和删除操作需要移动大量元素。
B.使用前需事先分配好存储空间,当线性表长度变化较大时,难以确定存储空间的容量。分配空间过大会造成存储空间的巨大浪费,分配的空间过小,难以适应问题的需要。
三、线性表的链式表示与实现
1、线性表的链式存储是采用一组任意的存储单元存放线性表的元素。
2、为了表示每个元素ai与其直接后继ai+1的逻辑关系,除了存储元素本身的信息外,还需要存储一个指示其直接后继元素的信息(即直接后继元素的地址)。这两部分构成的存储结构称为结点。
结点包括两个域:数据域和指针域。数据域存放数据元素的信息,指针域存放元素的直接后继的存储地址。指针域中存储的信息称为指针。
3、通过指针域将线性表中n个结点元素按照逻辑顺序链在一起就构成了链表。由于链表中的每一个结点的指针域只有一个,我们将这样的链表称为单链表。
图形表示通常用箭头表示指针,把链表通过箭头链接起来,在单链表的第一个结点之前增加一个头结点(head)。