Чтобы получить отсортированный список узлов разделенного списка, достаточно пройтись по ссылкам нулевого уровня. Вот так:void WalkTree(Node *P) { if (P == NIL) return; WalkTree(P->Left); /* Здесь исследуем P->Data */ WalkTree(P->Right); } WalkTree(Root);
Node *P = List.Hdr->Forward[0]; while (P != NIL) { /* Здесь исследуем P->Data */ P = P->Forward[0]; }
метод | операторы | среднее время | время в худшем случае |
---|---|---|---|
хеш-таблицы | 26 | O(1) | O(n) |
несбалансированные деревья | 41 | O(lg n) | O(n) |
красно-черные деревья | 120 | O(lg n) | O(lg n) |
разделенные списки | 55 | O(lg n) | O(n) |
метод | вставка | поиск | удаление |
---|---|---|---|
хеш-таблицы | 18 | 8 | 10 |
несбалансированные деревья | 37 | 17 | 26 |
красно-черные деревья | 40 | 16 | 37 |
разделенные списки | 48 | 31 | 35 |
случайные
данные |
Кол-во элементов | хеш-таблицы | несбаланс. деревья | красно-черные деревья | слоёные списки |
---|---|---|---|---|---|
16 | 4 | 3 | 2 | 5 | |
256 | 3 | 4 | 4 | 9 | |
4,096 | 3 | 7 | 6 | 12 | |
65,536 | 8 | 17 | 16 | 31 | |
упорядоченные данные | 16 | 3 | 4 | 2 | 4 |
256 | 3 | 47 | 4 | 7 | |
4,096 | 3 | 1,033 | 6 | 11 | |
65,536 | 7 | 55,019 | 9 | 15 |