Skip to content

Commit 55582c8

Browse files
committed
Added tickets 17-20 (not full)
1 parent a72baf8 commit 55582c8

File tree

4 files changed

+390
-8
lines changed

4 files changed

+390
-8
lines changed

slides/ticket17.md

+158-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,161 @@
11
# Экзаменационный билет №17
22

3+
## 1.Организация доступа по имени.
34

4-
## 1.Организация доступа по имени. Просматриваемые таблицы.
5-
## 2. Роль гипотез о росте структур при разработке систем управления памятью путем перепаковки. Понятие смешанной стратегии распределения свободной памяти
5+
Структура памяти
6+
7+
- Для чтения или записи значения необходимо указать адрес элемента памяти, для человека более привычный способ указания данных - имя.
8+
9+
Структура данных
10+
11+
- Понятие таблицы...
12+
- Пусть `К`-есть множество имен
13+
- `А`-есть множество адресов
14+
- тогда отношение “иметь имя” есть функция `f:К->А`
15+
16+
**Возможные задания `f`:возможный способ-табличное задание функции:**
17+
18+
1. Таблица-последовательность строк(записей)
19+
2. Запись может состоять из нескольких полей
20+
3. Одно из полей должно задавать имя записи(ключ),остальные поля образуют тело записи.
21+
22+
**Операции под таблицей:**
23+
24+
- поиск записей по ключу
25+
- вставка новой записи
26+
- удаление записи
27+
28+
**Таблица** - динамическая структура данных.
29+
30+
**Базисное множество** - семейство линейных структур из записей, **базисное отношение** включения определяется операциями вставки и удаления записей.
31+
32+
**Варианты расширения понятия таблицы:**
33+
34+
- наличие нескольких ключей
35+
- доступ по телу записей
36+
- сложные запросы для поиска
37+
- дополнительные операции
38+
39+
Принцип реализации таблиц:
40+
41+
- операции над таблицей не определяются(не предполагают) тот или иной порядок размещения записей в памяти ЭВМ.
42+
- реализация таблицы должна способствовать быстрому выполнению операций(в основном доступа).....свобода в размещении записей позволяет разработать несколько способов организации таблиц.
43+
44+
Введение различных способов предполагает явное или неявное существование разных типов ситуаций при использовании таблиц.
45+
46+
Просматриваемые таблицы.
47+
48+
Таблица последовательности строк(записей)
49+
50+
**По организации способа доступа таблицы делятся на следующие категории:**
51+
52+
- просматриваемые таблицы
53+
- упорядоченные таблицы
54+
- таблицы прямого доступа
55+
- перемешанные(хэш) таблицы
56+
57+
В просматриваемой таблице порядок расположения элементов никак не связан со значениями ключей (рис. II-34). Поэтому поиск элемента по ключу осуществляется обычным просмотром всех элементов таблицы, начиная с первого и до искомого
58+
59+
- если он есть в таблице
60+
- тогда поиск заканчивается успешно
61+
- или до конца таблицы
62+
- тогда поиск заканчивается неуспешно
63+
64+
| Ключ | Информация |
65+
| ---- | :--------: |
66+
| 08 | ... |
67+
| 33 | ... |
68+
| 47 | ... |
69+
| 25 | ... |
70+
| 18 | ... |
71+
72+
`рис. II-34`
73+
74+
- При отображении просматриваемой таблицы списком не играет роли, какую – статическую или динамическую – таблицу использовать
75+
- структура элемента таблицы (списка) будет одинакова
76+
- При включении в таблицу новый элемент может быть размещен в любом месте таблицы (списка)
77+
- Если некоторый элемент удаляется из списка, действия, выполняемые при этом, могут быть разными в зависимости от того, какой элемент удаляется (рис. II–38).
78+
79+
![](../pictures/ticket17-1.png)
80+
81+
- Если удаляется первый элемент списка, в этом случае должен быть модифицирован указатель на начало списка (таблицы). - Если же удаляется некоторый элемент из середины списка, тогда модифицируется поле указателя предыдущего элемента (рис. II–38).
82+
83+
**Таким образом, при удалении элемента надо:**
84+
85+
- иметь доступ к предшествующему элементу списка
86+
- различать вид предшествующего элемента.
87+
88+
Поскольку операция поиска возвращает искомый элемент и не сообщает о месте его размещения в списке, при реализации операции удаления элемента из списка приходится либо
89+
90+
- (a) повторять поиск элемента
91+
- либо (b) следует несколько изменить реализацию операции поиска.
92+
- Способ (b) удобно реализуется средствами языка С/С++
93+
94+
Алгоритм удаления элемента из просматриваемой таблицы-списка по варианту a) приведен на рис. II–39.
95+
96+
- В приведенном алгоритме отдельно рассматриваются удаление первого и промежуточного элементов таблицы, поскольку это приводит к необходимости модифицировать разные структуры
97+
- указатель на начало таблицы при удалении первого элемента и поле указателя в элементе списка при удалении промежуточного элемента
98+
- В результате в блоке C2 сравниваются ключи первого элемента таблицы и удаляемого элемента и, при их совпадении, в блоке D2 переопределяется указатель на начало таблицы.
99+
100+
![](../pictures/ticket17-2.png)
101+
102+
- Если удаляется не первый элемент, осуществляется в цикле (блоки C3, D3, E3) поиск удаляемого элемента
103+
- При этом используются два указателя – на текущий (cur) и на предыдущий (prev) элементы таблицы
104+
- При совпадении ключей переопределяется поле ссылки в предыдущем элементе (на который указываетprev), в результате чего элемент удаляется из таблицы-списка.
105+
106+
Ниже приводится текст программы, соответствующий приведенному алгоритму.
107+
108+
```C++
109+
struct Item
110+
{
111+
int key;
112+
Type info;
113+
Item *next;
114+
};
115+
Item *ptab; /*указатель на начало таблицы */
116+
int del1(int k)
117+
{
118+
Item *cur, *prev;
119+
cur = ptab;
120+
/*проверяем, есть ли в таблице элементы */
121+
if(!cur)
122+
return -1; /*таблица пуста – отказ */
123+
/*возможно, требуется удалить первый элемент таблицы */
124+
if(cur->key == k)
125+
{
126+
/* удаляем первый элемент */
127+
ptab = cur->next;
128+
delInfo(cur->info);
129+
delete cur;
130+
return 0;
131+
}
132+
/* ищем удаляемый элемент среди других элементов таблицы */
133+
while(cur->next)
134+
{
135+
/* есть другие элементы */
136+
prev = cur;
137+
cur = cur->next;
138+
if(cur->key == k)
139+
{
140+
/* нашли элемент, который надо удалить */
141+
prev->next = cur->next;
142+
delInfo(cur->info);
143+
delete cur;
144+
return 0;
145+
}
146+
}
147+
/* естественный выход из цикла – в таблице нет элемента с ключом k */
148+
return -1;
149+
}
150+
```
151+
152+
## 2. Роль гипотез о росте структур при разработке систем управления памятью путем перепаковки.
153+
154+
Дерево является идеально сбалансированным если для каждого его узла количество узлов в левом и правом поддеревьях различаются не более чем на 1.
155+
Дерево является сбалансированным,если для каждого узла высота левого и правого поддеревьев различаются не более,чем на 1(АВЛ-деревья).
156+
Идеально сбалансированные деревья являются сбалансированными.Операции обработки сбалансированных деревьев имеют сложность log2N.(поиск,вставка,удаление)
157+
Тmin=1
158+
Tmax=log2N(при сбалансированном дереве)
159+
Tmax=N(при вырожденном дереве)
160+
161+
![](../pictures/ticket17-3.png)

0 commit comments

Comments
 (0)