1.线性表
线性表是n个具有相同特性的数据元素的有限序列。线性表是一种在实际中广泛使用的数据结构,常见的线性表:顺序表,链表,栈,队列,字符串。
2.顺序表
顺序表是用一段物理地址连续的存储单元依次存储数据元素的线性结构,一般情况下采用数组存储。在数组上完成数据的增删查改。
顺序表就是数组,但是在数组的基础上,它还要求数据是从头开始连续存储的,不能跳跃间隔
顺序表缺陷:
1.空间不够了,需要增容,增容是要付出代价的。
2.避免频繁增容,我们满了基本都是扩二倍,可能就会导致一定的空间浪费。
3.顺序表要求数据从开始位置连续存储,那么我们在头部,中部插入,删除数据,需要挪动数据,这样效率不高。
环形链表:
证明:slow走一步,fast走两步,一定会相遇,如何求环的入口点
链表的分类:
1.单向或者双向
2.带头或者不带头
3.循环或者不循环
顺序表和链表的区别:
顺序表:
优点:
1.支持随机访问。
2.cpu高速缓存命中率更高
缺点:1.头部中部插入删除时间效率低,O(N)
2.连续的物理空间,空间不够了,需要增容,增容是要付出代价的。.避免频繁增容,我们 满了基本都是扩二倍,可能就会导致一定的空间浪费。
链表(双向带头循环链表):
优点:
1.任意位置插入删除效率高,O(1).
2,按需申请示范空间
缺点:
1.不支持随机访问。(用下标访问),意味着:一些快排,二分查找算法在这种结构上不适用。
2.链表存储一个值,同时要存储链接指针,也有一定的消耗。
3.cpu高速缓存命中率更低