История изменений
Исправление Manhunt, (текущая версия) :
а где такой алгоритм со случайными удалениями взял?
Алгоритм очевидный, взял из головы. Анон выше двумя словами описал его же: Вопрос к алгоритмистам (комментарий) , т.е. очевиден этот алгоритм не только мне.
Если тебе не очевидно, то для развития интуиции предлагаю изучить книжку «А. Шень. Программирование: теоремы и задачи». http://www.mccme.ru/free-books/shen/shen-progbook.pdf
да и можно сделать так что бы он при удалении элемента в середине не шел до конца массива а заполнял освободившиеся ячейки?
Можно. Например, если вместо
void Free(size_t slot)
{
list.Insert(HeadFreed, slot);
}
void Free(size_t slot)
{
size_t p = list.GetPrev(HeadFreed);
list.Insert(p, slot);
}
Исходная версия Manhunt, :
а где такой алгоритм со случайными удалениями взял?
Алгоритм очевидный, взял из головы. Анон выше двумя словами описал его же: Вопрос к алгоритмистам (комментарий)
Если тебе не очевидно, то для развития интуиции предлагаю изучить книжку «А. Шень. Программирование: теоремы и задачи». http://www.mccme.ru/free-books/shen/shen-progbook.pdf
да и можно сделать так что бы он при удалении элемента в середине не шел до конца массива а заполнял освободившиеся ячейки?
Можно. Например, если вместо
void Free(size_t slot)
{
list.Insert(HeadFreed, slot);
}
void Free(size_t slot)
{
size_t p = list.GetPrev(HeadFreed);
list.Insert(p, slot);
}