- •Типы и структуры данных. Опредления, классифиация.
- •Простые типы данных, операции над ними. Сильная и слабая типизация.
- •Массивы. Операции, способы предсавления, сложность операций.
- •Записи. Операции над ними, способы представления, сложность операций.
- •Объединения. Операции, представление. Сложность операций.
- •Множества. Операции, способы представления, сложность операций.
- •Последовательности вкратце
- •Линейные списки
- •Очереди.
- •Линейный список, сложность операции o(1)
- •Динамические струкутуры данных. Работа динамической памяти в c.
- •Деревья. Определения, классификация, способы представления.
- •Двоичные деревья, операции.
- •Дерево поиска. Основные операции, вычисление средней длины пути.
- •Виды сбалансированных деревьев, достоинства и недостатки.
- •Дерево оптимального поиска
- •Красно-черные деревья.
- •Splay-деревья.
- •Асоциативные массивы и хэши
Объединения. Операции, представление. Сложность операций.
В Паскале – нет
В Си – Union <имя> {
T1 S1;
T2 S2;
…
Tn Sn;
}
Все элементы начинаются с одно и того же места в памяти (если присваиваем новое значение элементу объединения, то перезаписываем любое предыдущее присваивание). Объединение может хранить значение только для одного элемента в каждый момент времени.
Пример: иллюстрирует использование объединения distance. Сначала программа присваивает значение элементу
miles и выводит это значение. Затем программа присваивает значение элементу meters. При этом значение элемента miles теряется:
union distance
{ int miles; long meters; } walk;
walk.miles = 5; cout << "Пройденное расстояние в милях " << walk.miles << endl; walk.meters = 10000; cout << "Пройденное расстояние в метрах " << walk.meters << endl; Объединение определяет шаблон, с помощью которого ваши программы могут позднее объявлять переменные. Когда компилятор встречает определение объединения, он распределяет количество памяти, достаточное для хранения только самого большого элемента объединения.
Характеристики:
1)Размер – максимальный из размеров компонент sizeof (union) = max(sizeof Ti);
2)Мощность – мощность максимального типа #union = #max(Ti).
Операции:
1)Индексация по имени;
2)Присваивание А=В через memcpy;
3)Сравнение А==В через memcmp(A, B, sizeof B);
Объединения применяют для записей с вариантами (если в анкете, то каждый последующий порос зависит от предыдущего ответа).
Множества. Операции, способы представления, сложность операций.
В языке Паскаль множество — составной тип данных, хранящий информацию о присутствии в множестве объектов любого счетного типа.
T: set of Tbase
Характеристики:
1)Мощность множества – количество множеств, котрое можно построить на основе базового типа .
Например, множество (1, 2) : можно построить пустое множество, (1), (2), (1,2) – всего 4.
2)Размер – один бит на элемент sizeof set = (#Tbase)/8.
Т. е. представление одного элемента множества – один бит, имеем дело с битовыми строками
Операции:
1)Индексации нет;
2)Присваивание А=В
3) Сравнение ==, !=,
а так же включение A <= B;
4)Проверка на вхождение a in B – истина, если а есть в В; ложь, если элемента а в И не было;
5)Объединение (+), Пересечение (*), Вычитание (-).
Примеры множеств – множество, куда записывается алфавит входного сообщения или множество для обработки команд (см. конспект).
Представление в памяти – стр. 46.
Когда размерность битовой строки не превышает длинны машинного слова, представление в виде множеств будет максимально эффективно.