Реализация кэша LRU с использованием двойных связанных списков
Учитывая предварительно определенный размер списка 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
Подход:
Идея очень проста: продолжайте вставлять элементы в голову.
- если элемент отсутствует в списке, добавить его в начало списка
- если элемент присутствует в списке, то переместите элемент в начало и сдвиньте оставшийся элемент списка
Ниже приведена реализация вышеуказанного подхода: