1、线性表
线性表是n个元素的有限序列,通常记为(a1,a2,... ,an)
特点:
- 存在唯一的表头和表尾
- 除了表头外,表中的每一个元素只有唯一的直接前驱
- 除了表尾外,表中的每一个元素只有唯一的直接后继
1.1 顺序存储
用一组地址连续的存储单元一次存储线性表中的数据元素,从而使得逻辑关系相邻的两个元素在屋里位置上也相邻。
优点:可以随时存取表中的元素
缺点:插入和删除操作需要移动大量的元素
第i个元素ai的存储位置为:
LOC(ai)=LOC(a1)+(i - 1)X L
其中LOC(a1)是表中第一个元素的存储位置,L是表中每个元素所占空间的大小。
1.2 链式存储
链式存储是指用节点来存储数据元素,节点的空间可以是连续的,也可以是不连续的,因此存储数据元素的同时必须存储元素之间的逻辑关系。
数据域 | 指针域 |
节点空间只有在需要的时候才申请,无须事先分配。
优点:插入和删除操作不需要移动元素,操作方便。
缺点:增加了存储空间开销,不能随机访问任一节点。
2、栈
栈进行插入和删除操作的一端称为栈顶。栈的修改是按先进后出的原则进行的。
3、队列
先进先出的线性表,只允许在表的一端插入元素(队尾),而在表的另一端删除元素(对头)
链队列:头指针和尾指针的值相同,且都指向头结点时队列为空。
4、串
仅由字符构成的有限序列,是取值范围受限的线性表。一般记为S=‘a1 a2 ... an’。
ASCII码值:
a 97 A 65 0 48
5、数组
由于数组一般不做插入和删除运算,因此数组适合采用顺序存储结构。
二维数据有两种顺序映像方式:
- 以行序为主序(低下标优先)
- 以列序为主序(高下标优先)