Чи існує структура даних для підтримки упорядкованого списку, який підтримує наступні операції за амортизований час ?
GetElement (k) : повертає й елемент списку.
InsertAfter (x, y) : Вставте новий елемент y у список відразу після x.
Видалити (x) : видалити x зі списку.
Для останніх двох операцій можна припустити, що x задано як вказівник безпосередньо в структуру даних; InsertElement повертає відповідний покажчик на y. InsertAfter (NULL, y) вставляє y на початку списку.
Наприклад, починаючи з порожньої структури даних, наступні операції оновлюють упорядкований список, як показано нижче:
- InsertAfter (NULL, a) [a]
- InsertAfter (NULL, b) [b, a]
- InsertAfter (b, c) [b, c, a]
- InsertAfter (a, d) [b, c, a, d]
- Видалити (c) [b, a, d]
Після цих п'яти оновлень GetElement (2) повинен повернути d, а GetElement (3) повернути помилку.