顺序表与链表(知识理论篇)
1.线性表的分类
线性表(linear list)是n个具有相同特性的数据元素的有限序列
线性表是一种在实际中广泛使用的数据结构,常见的线性表:
顺序表、链表、栈、队列、字符串
,通常运用于顺序表、链表
线性表在逻辑上是线性结构,也就说是连续的一条直线。但是在物理结构上并不一定是连续的,线性表在物理上存储时,通常以
数组和链式结构的形式存储
2.顺序表和链表的理论剖析
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改
顺序表:可动态增长的数组,要求数据是连续存储的
- - -静态的顺序表不实用,动态的顺序表实用
顺序表一般可以分为:
- 静态顺序表:使用定长数组存储元素- - -定长数组:int array[N];
- 动态顺序表:使用动态开辟的数组存储- - -动态开辟数组: int* array;
链表一般可以分为:带头不带头、单向双向、循环非循环—一共组成8种链表形式
无头非循环单向链表、无头非循环双向链表
带头非循换单向环链表、带头非循换双向链表
无头循环单向链表、无头循环双向链表
带头循环单向链表、带头循环双向链表
对于链表结点的理解:
随便举几个例子:
关于链表带头与否的问题:尽量带头结点head
- 带头结点head可以很方便的存储结点内容,方便进行链表的增删查改,推荐使用
- 如果不带头结点,就需要自己在定义一个虚拟头结点dummy node(虚拟头结点)或者临时新结点进行中间操作