LINUX.ORG.RU

Устаревание записей в таблице


0

1

Есть таблица (маршрутизации, но это не важно) в ней максимум несколько сотен записей, часть из них используются часто, часть - редко. При добавлении новой записи нужно выкинуть самую редко используемую и на ее место вставить новую.

Помогите придумать алгоритм не основанный на таймерах, а только на факте использования записи.

Ресурсы ограничены, поэтому на каждую запись желательно потратить не более одного байта под это дело.

★★★★

Делов-то: сделай у каждой записи поле - указатель на следующую запись. Получится односвязаный список. При вставке новой записи удаляй первую запись в списке, новую ставь в конец. При использовании записи ищи ее в списке, удаляй, вставляй в конец. У тебя записей несколько сотен, впринципе искать не очень долго. Если хочешь быстро искать, то сделай индекс на всей этой хрени в виде хеш-таблицы «значение записи» -> «адрес записи».

dizza ★★★★★
()

Иметь поле указателя в данном случае очень накладно.

Задача решена очень просто. При каждом использовании записи она поднимается на одну строку вверх. Таким образом снизу всегда самые редко используемые записи. При выделении новой просто берется последняя.

alexru ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.