Проблема обслуговування замовлення (або "підтримка порядку в списку") полягає в підтримці операцій:
singleton
: створює список з одним елементом, повертає на нього вказівникinsertAfter
: дається вказівник на елемент, вставляє після нього новий елемент, повертаючи вказівник на новий елементdelete
: надавши вказівник на елемент, видаляє його зі свого спискуminPointer
: надавши два вказівники на елементи того ж списку, повертає один ближче до передньої частини списку
Я знаю три рішення цього завдання , які виконують всі операції в амортизуються час. Усі вони використовують множення.
- Атанасіос К. Цакалідіс: Підтримання порядку в узагальненому зв’язаному списку
- Дієц, П., Д. Слятор, Два алгоритми підтримки порядку в списку
- Майкл А. Бендер, Річард Коул, Ерік Д. Демен, Мартін Фарах-Колтон та Джек Зіто, "Два спрощених алгоритми для підтримки порядку в списку"
Чи можна вести замовлення у списку за амортизованим часом без використання будь-яких арифметичних операцій, не в A C 0 ?
Знайшов, де я читав про це; мова йшла про Пентій 4, а не ІІІ; і не впроваджував множення, замість цього працював над новою інструкцією цього процесора: М. Торпуп, "Про реалізацію AC0 злиття дерев та атомних куполів", у працях чотирнадцятого щорічного симпозіуму ACM-SIAM з дискретних алгоритмів, Філадельфія, ПА, США, 2003, стор. 699–707.
—
AT