链表(上)

1、缓存是一种提高数据读取性能的技术。
2、常见的缓存淘汰策略有:先进先出策略FIFO(First In ,First Out);最少使用策略LFU(Least Frequentlly Used);最近最少使用策略LRU(Least Recently Used)。
3、数组需要一块连续的内存空间来存储。
4、链表是通过“指针”将一组零散的内存块串联起来。
链表可以分为:单链表、双向链表、循环链表
5、内存块成为链表的“结点”
因为链表的存储空间本身并不是连续的,所以在链表中插入和删除一个数据是非常快速的。但是有利有弊,链表想要随机访问第K个元素,没有数组高效。这时就需要指标一个结点一个结点的一次遍历,直到找到相应的结点。
6、循环链表是一种特殊的单链表,跟单链表唯一的区别是再尾结点。单链表的尾结点指向空地址,表示这就是最后的结点了。而循环链表的尾结点指标是指向链表的头结点。
7、循环链表的优点是从链尾到链头比较方便,当要处理的数据具有环形结构特点是,就特点适合采用循环链表。比如著名的“约瑟夫问题”。尽管用单链表也可以实现,但是单链表实现的话,代码就会简介很多。
8、双向链表:顾名思义,它支持两个方向,每个结点不止有一个后指针next指向后面的结点,还有一个前驱指针prev指向前面的结点。
如果存储同样多的数据,双向链表要比单向链表占用更多的内存空间。虽然两个指针比较浪费存储空间,但可以支持双向遍历,这样就带来了双向操作的灵活性。
9、相比单链表,双向链表适合解决那种问题呢?
从结构上看,双向链表可以支持O(1)时间复杂度的情况下找到前驱结点,正式这样的特点,也是双向链表在某些情况下的插入、删除等操作都要比单链表简单、高效。
10、从链表中删除一个数据无外两种情况:
·删除结点中“值等于某个给定值”的结点;
·删除给定指针指向的结点。
缓存实际上就是利用了空间换时间的设计思想。对于执行较慢的程序,可以通过消耗更多的内存(空间换时间)来进行优化;而消耗过多内存的程序,可以消耗更多的时间(时间换空间)来降低内存的消耗。
引用自极客时间

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值