第三章 线性表《大话数据结构》读后笔记
线性表的定义
零个或多个数据元素的有限序列
线性表顺序存储结构
即数组存储,顺序存储结构需要在内存中划出地址连续的空间。
当要get某个元素时:只需要通过下标拿即可时间复杂度O(1)
当往中间插入某个元素时:所有后面都要往后移动 最坏时间复杂度O(n),最好O(1), 平均时间复杂度为 n-1/2 还是为 O(n)
当删除某个元素时:所有后面都要往前移动 最坏时间复杂度O(n),最好O(1), 平均时间复杂度为 n-1/2 还是为 O(n)
优点:1.无须为表示表中元素之间的逻辑关系而增加额外的存储
2.可以快速地存取表中任一位置的元素
缺点:1.插入和删除需要移动大量元素
2.当线性表长度变化较大的时,难以确定存储空间容量
3.造成存储空间的碎片
线性表链式存储结构
链式存储结构处理要存储数据元素信息之外,还要存储它的后继元素的存储地址。
如图所示, 单链表结构:
当获取第i个元素时:需要从头遍历 运气好的话时间复杂度 O(1)即可获得,运气差的话需要O(n)
当进行插入,与删除操作:只需要 改变上一个节点指针地址, 指向自己就行了。时间复杂度O(1)
当
单链表结构与顺序存储结构优缺点
静态链表
定义:用数组描述的链表
优点:插入和删除时,只需要修改游标,不需要移动元素,从而改进了在顺序存储结构中的插入和删除操作需要移动大量元素的缺点
缺点:没有解决连续存储结构带来表长度难以确定的问题
失去了顺序存储的随机存取的特性
循环链表
定义:将单链表中终端节点的指针端由指针指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表,称为单循环链表,简称循环链表。
双向链表
定义:将单链表每个结点再设置一个指向其前驱结点的指针域。