python利用双向链表和map实现FIFO算法
双向链表在之前:
https://blog.csdn.net/weixin_41978134/article/details/106143560
"""
@File : FIFO.py
@Author: Gareth
@Date : 2020/5/10 17:33
@Desc : FIFO算法
"""
from Computer_Organization.node1 import DoubleLinkedList, Node
# FIFO全称是First in First out,即先进先出算法。其基于如果一个数据最先进入缓存中,则应该最早淘汰掉的思路,也就是说优先删除掉最先保存到链表中的数据;
# 利用双向链表记录数据顺序,map查询数据;
class FIFOCache(object):
def __init__(self, capacity):
self.capacity = capacity
self.size = 0
self.map = {}
self.list = DoubleLinkedList(self.capacity)
# 查询:如果从缓存中获取到对应的key,则返回对应的数据,不会在链表中移动key的顺序
def get(self, key):
if key not in self.map:
return -1
else:
value = self.map.get(key)
return value
# 插入/更新:首先判断是否已经存在key。如果已经存在该key&#x