- •Результаты выполнения лабораторной работы по второму варианту.
- •Результаты выполнения работы по третьему варианту.
- •Результаты выполнения работы по четвертому варианту.
- •Результаты выполнения работы по пятому варианту:
- •Результаты выполнения работы по седьмому варианту.
- •III. Лабораторная работа 3. Инвертированные списки.
- •Меню для лабораторной работы 3 будет следующим:
Результаты выполнения работы по третьему варианту.
Добавляется еще один столбец, в котором будут соединены в одну цепочку все свободные ячейки.
Вначале все ячейки свободны, поэтому имеем следующую таблицу:
-
Адрес
Ключ
Адресная ссылка
Цепочка свободных ячеек
0
1
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
-1
Адрес первой свободной ячейки – 0.
После ввода ключей 11 и 21 имеем следующую таблицу:
-
Адрес
Ключ
Адресная ссылка
Цепочка свободных ячеек
0
21
-1
1
11
0
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
-1
Как мы видим, если необходима свободная ячейка, то перебор не требуется. Адрес первой свободной ячейки - адрес первой ячейки в цепочке. После этого первой свободной ячейкой становится следующая за ней и ее адрес запоминается.
После записи ключей 11 и 21 адрес первой свободной ячейки – 2.
После ввода ключа 26:
-
Адрес
Ключ
Адресная ссылка
Цепочка свободных ячеек
0
21
-1
1
11
0
2
3
3
4
4
5
5
7
6
26
-1
7
8
8
9
9
-1
Адрес первой свободной ячейки остается – 2.
После удаления ключа 11 имеем следующую таблицу:
-
Адрес
Ключ
Адресная ссылка
Цепочка свободных ячеек
0
2
1
21
-1
2
3
3
4
4
5
5
7
6
26
-1
7
8
8
9
9
-1
Адрес начала цепочки свободных ячеек – 0.
При удалении элемента его адрес становится адресом начала цепочки свободных ячеек.
Пусть необходимо записать в таблицу ключи 0, 21, 10, 12,13, 26.
-
Адрес
Ключ
Адресная ссылка
Цепочка свободных ячеек
0
0
2
1
21
-1
2
10
3
3
12
4
4
13
-1
5
7
6
26
-1
7
8
8
9
9
-1
Адрес начала цепочки свободных ячеек – 5.
Рассмотрим еще раз алгоритм удаления ключа из таблицы, если способ разрешения коллизии “срастающиеся цепочки”.
Необходимо удалить ключ 0. На его место должен встать ключ 10, так как он также как и ключ 0, должен располагаться по адресу 0. Далее необходимо удалить ключ 10. Он находится по адресу 2. В цепочке есть ключ, который должен занимать это место “по праву”. Это ключ 12. Он ставится на место ключа 10. Далее необходимо удалить ключ 12 на месте 3. В цепочке есть ключ, который должен занимать место 3 “по праву”. Это ключ 13. Он ставится на место ключа 12. Далее необходимо удалить ключ 13 на месте 4. В цепочке нет ключей, которые должны занимать место 4 “по праву”. Следовательно, ключ 13 на месте 4 просто удаляется. При этом его адресная ссылка записывается в адресную ссылку ключа 13 по адресу 3.
Получим следующую таблицу:
-
Адрес
Ключ
Адресная ссылка
Цепочка свободных ячеек
0
10
2
1
21
-1
2
12
3
3
13
-1
4
5
5
6
6
26
-1
7
7
8
8
9
9
-1
Адрес начала цепочки свободных ячеек – 4.
Если необходимо удалить ключ 12, то таблица будет иметь вид:
-
Адрес
Ключ
Адресная ссылка
Цепочка свободных ячеек
0
10
3
1
21
-1
2
4
3
13
-1
4
5
5
7
6
26
-1
7
8
8
9
9
-1
Адрес начала цепочки свободных ячеек – 2.
