Реализация кэша LRU с использованием двойных связанных списков

Опубликовано: 18 Сентября, 2022

Учитывая предварительно определенный размер списка N и массива Arr . Задача состоит в том, чтобы реализовать алгоритм наименее недавно использованных (LRU) с использованием двойных связанных списков.
Программа принимает два набора входных данных. Во-первых, размер связанного списка. Во-вторых, элемент для поиска в связанном списке.
Примеры:

Input: N = 3, Arr = { 1, 2, 3 } 
Output: 
[0]->[0]->[0]->NULL 
[1]->[0]->[0]->NULL 
[2]->[1]->[0]->NULL 
[3]->[2]->[1]->NULL 
Input: N = 5, Arr = { 1, 2, 3, 4, 3, 8 } 
Output: 
[0]->[0]->[0]->[0]->[0]->NULL 
[1]->[0]->[0]->[0]->[0]->NULL 
[2]->[1]->[0]->[0]->[0]->NULL 
[3]->[2]->[1]->[0]->[0]->NULL 
[4]->[3]->[2]->[1]->[0]->NULL 
[2]->[4]->[3]->[1]->[0]->NULL 
[8]->[2]->[4]->[3]->[1]->NULL 
 

Подход:
Идея очень проста: продолжайте вставлять элементы в голову.

  • если элемент отсутствует в списке, добавить его в начало списка
  • если элемент присутствует в списке, то переместите элемент в начало и сдвиньте оставшийся элемент списка

Ниже приведена реализация вышеуказанного подхода: