数据结构
二、线性表
2.1线性表的逻辑结构
线性表是具有相同特性数据元素的有限序列。
2.2线性表的存储结构
第一个元素没有直接前驱元素,最后一个元素没有直接后继元素,其他元素都有唯一的前驱和后继元素。线性表有顺序存储结构和链式存储结构。
2.2.1顺序存储结构
是指将线性表中的各个元素依次存放在一组地址连续的存储单元中,通常将这种方法存储的线性表称为顺序表。
顺序存储结构的优缺点:
- 优点:无须关心表中元素之间的关系,所以不用增加额外的存储空间;可以快速地取表中任意位置的元素。
- 缺点:插入和删除操作需要移动大量元素。使用前需事先分配好内存空间,当线性表长度变化较大时,难以确定存储空间的容量。分配空间过大会造成存储空间的巨大浪费,分配的空间过小,难以适应问题的需求。
2.2.2链式存储结构
一、单链表:
上图第一个为含有头结点的单链表,第二个为不含头结点的单链表。
- 头结点不含任何信息,它后边就是存储第一个数据信息的结点即开始结点,链表最后一个存储数据信息的结点即尾结点。
- 判断列表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
不管哪一种链表,只要不含数据结点,它就是空链表。
1.对于含有头结点的单链表:头结点的next指针为空的话,它就是空链表,即
2.对于不含头结点的单链表:头结点为空的话,它就是空链表,即
二、双链表:
- 判断列表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
与单链表一样。
三、循环链表:
上图第一个为含头结点的单循环链表,第二个为含头结点的双循环链表。
- 判断链表是否为空(如果为空再进行删除时就会出错,所以有必要判断是否为空):
1.对于含有头结点的链表:
1>.单循环链表:当头结点的指针指向它本身时为空。
2>.双循环链表:当头结点的两个指针都指向它本身时为空。 - 单循环链表和双循环链表不管什么时候都不会有空指针。
2.对于不含头结点的链表:
Head指针为空时。