一、线性表分类
存储方式:顺序存储——顺序表;链式存储——单链表、双链表、循环链表和静态链表
1、顺序表
逻辑上相邻、物理位置也相邻
顺序表的存储保密度高,每个节点只存储数据元素;
线性表的存储结构是一种随机存取的存储结构;
一个顺序表的所占用的存储空间大小与元素的存放顺序无关,与表的长度、元素的类型和元素各字段的类型有关;
线性表中元素的魏旭需
1.1 一维数组可以静态分配和动态分配
注意:动态分配并不是链式存储,属于顺序存储结构。分配的空间h大小可以在运行时决定
1.2 顺序表上的基本操作
(1)插入操作(1~n+1)
最好情况:在表尾插入,元素不在往后移动,时间复杂度O(1);
最坏的情况:在表头插入,元素后移将执行n次,时间复杂度O(n);
平均情况:随机插入,时间复杂度O(n);
因此,线性表插入算法的平均时间复杂度为O(n)。
(2)删除操作(1~n)
线性表删除算法的平均时间复杂度为O(n)。
(3)按值查找
线性表按值查找算法的平均时间复杂度为O(n)。
2.链表
不需要使用地址连续的存储单元
2.1单链表
线性表的链式存储;
链表节点除存放元素自身的信息外,还存放一个指向其后续的指针。
通常用头指针来表示一个单链表,头指针为Null时,表示这是一个空链表