LINUX.ORG.RU

История изменений

Исправление 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);
	}