定义
线性表的链式存储结构称为链表:n个节点离散分配,彼此通过指针相连,每个节点只有一个后继节点和前驱节点,首节点无前驱节点,尾节点无后继节点。
链表的优点:链表不需要预先知道存储数据大小,可以充分的利用计算机内存空间,实现内存的动态分配管理;
链表的缺点:链表失去了数组随机读取的优点,同时由于增加了指针域,增大了内存占用;无法高效的获取长度,无法根据偏移快速访问元素。
分类
分法一:单链表、双链表
分法二:循环链表、非循环链表
分析
单链表:插入,时间复杂度为O(1),不用像数组那样移动后面的所有元素;删除,时间复杂度为O(n),因为不知道删除元素的前一个元素的存储位置。
双链表:插入,时间复杂度为O(1);删除,时间复杂度为O(1),因为可以通过指向前一个元素的指针访问前一个元素,和单链表不同。