一、顺序表
1、定义:用一组连续的存储单元依次存储数据元素,需要占用一整块存储空间的存储列表。
2、优点:
■存储密度大(结点本身所占存储量/结点结构所占存储量)
■可以随机存取表中任一元素
3、缺点:
■在插入、删除某一元素时,需要移动大量元素
■浪费存储空间
■属于静态存储形式,数据元素的个数不能自由扩充
因此为了解决上述缺点而产生了链表。
4、顺序表的操作算法分析
时间复杂度:查找、插入、删除算法的平均时间复杂度为O(n)。
空间复杂度:显然,顺序表操作算法的空间复杂度S(n)=O(1)(没有占用辅助空间)。
二、链表
1、例如要在链表中存储26个字母,操作如下图所示:
各结点由两个域组成:
数据域:存储元素数值数据
指针域:存储直接后继结点的存储位置
2、链表分为单链表、双链表、循环链表
①单链表:结点只有一个指针域的链表,称为单链表或线性链表。
②双链表:结点有两个指针域的链表,称为双链表。
③首尾相接的链表称为循环链表。如下图所示:
3、链表(链式存储结构)的特点
①结点在存储器中的位置是任意的,即逻辑上相邻的数据元素在物理上不一定相邻。
②访问时只能通过头指针进入链表,并通过每个结点的指针域依次向后顺序扫描其余结点,所以寻找第一个结点和最后一个结点所花费的时间不等。这种存取元素的方法被称为顺序存取法。