数据结构:链表(1)

王争数据结构笔记(06)

1、三种常见的缓存淘汰策略:先进先出策略FIFO,最少使用策略(Least Frequently Used,LFU),最近最少使用策略(Least Recently Used,LRU).

2、数组利用连续的内存空间进行存储,对内存的要求较高。链表则是通过指针零散的内存块串接起来。如图1所示。

图片来源:王争数据结构第六课

3、三种常见的链表:单链表,双向链表和循环链表。

4、单链表的第一个节点叫做头结点,记录链表的基地址。尾结点的指针不会记录下一个结点的地址,而是空地址NULL。

     由于链表的存储并不连续,所以插入和删除对于链表来说非常容易,操作对应的时间复杂度为O(1)。相反,链表随机访问需要O(n)的时间复杂度。

5、循环链表是特殊的单链表,将单链表置空的尾结点指向链表的头结点,形成首尾相连的结构。这种结构对于处理环形结构特点的数据具有优势。

6、双向链表同时具有后继指针和前驱指针,构成两个方向。虽然占据了更多的存储空间,但是支持了双向遍历。

7、单链表和双链表比较

目的单链表双向链表
删除结点中值等于某个给定值删除O(1)+遍历查询O(n)=O(n)删除O(1)+遍历查询O(n)=O(n)
删除给定指针指向的结点O(n)O(1)

8、数组,链表比较(1)

时间复杂度数组链表
插入,删除O(n)O(1)
随机访问O(1)O(n)

9、数组:1)借助CPU缓存机制,访问效率更高。

                2)如果数组过大,可能连续的内存空间不足。

     链表:1)在内存区间不是连续存储,对缓存不友好,无法预读。

                2)支持动态扩容,没有大小限制。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值