1 线性表
在讨论线性表之前,我们需要先了解下线性结构特点;
1.1 线性结构
线性结构特点,在数据元素的非空有限集合中:
- 存在惟一的一个被称做“第一个”的数据元素;
- 存在惟一的一个被称做“最后一个”的数据元素;
- 除第一个之外,集合中的每个元素均只有一个前驱;
- 除最后一个之外,集合中每个数据元素均只有一个后继;
1.2 线性表
线性表是最常用且最简单的一种数据结构,其是n个数据元素的有限序列。
- 其有限且有限
- 表中元素具有相同特性
1.3 线性表表示与实现
线性表具有两种表现形式,指代其存储方式。
1.3.1 线性表的顺序表示
线性表的顺序表示指的是用一组地址连续的存储单元依次存储线性表的数据元素。
- 线性表的顺序存储结构,只要确定了存储线性表的起始位置,线性表中任一数据元素都可随机存取,因此线性表的顺序存储结构是一种随机存取的存储结构;
- 其存储逻辑关系上相邻的两个元素在物理位置上也相邻,因此在插入或者删除操作时,需要移动大量元素;
1.3.2 线性表的链式表示
线性表的链式存储结构(单向链表)是用一组任意的存储单元存储线性表的数据元素(相应的存储单元可以是连续也可以是不连续);
链式存储结构下的元素,包含两个域:
- 数据域,存储数据元素信息的域;
- 指针域,存储直接后继存储位置的域;
对于链表存储形式,有三种:单向链表、双向链表、循环链表;
- 循环链表:表中最后一个结点的指针域指向头结点,整个链表形成一个环;(循环结束条件:p->next指向是否为头结点)
- 双向链表:其结点有两个指针域,一指向直接后继,另一指向直接前驱
1.4 栈
栈,是限定仅在表尾进行插入或删除操作的线性表;其表尾称为栈顶,表头端称为栈底;
1.5 队列
队列,是一种先进先出的线性表。它只允许在表的一端进行插入,而在另一端删除元素;
1.6 串
串是由零个或多个字符组成的有限序列;
两个串相等,只有当两个串的长度相等,并且各个对应位置的字符都相等时才相等