- •Билет 1. Типы и структуры данных
- •Диапазонные
- •Статические
- •Динамические
- •Перечислимые
- •Предопределенные
- •Билет 2. Простые типы. Операции. Типизация.
- •Билет 3. Массивы
- •Билет 4. Записи
- •Билет 5. Объединения
- •Билет 6. Множества
- •Билет 7. Последовательности
- •Билет 9. Стеки
- •Билет 10.Очереди
- •Линейный список, сложность операции o(1)
- •Билет 11. Динамические структуры данных.
- •Билет 12. Деревья. Общие определения
- •Билет 13. Двоичные деревья
- •Билет 14. Деревья поиска
- •Билет 15. Авл-сбалансированные деревья
- •Билет 16. Б-деревья
- •Билет 17. Дб- и сдб-деревья.
- •Билет 18. Характеристики сбалансированных деревьев.
- •Билет 19. Дерево оптимального поиска.
- •Билет 20. Splay-дерево
- •Splay (расширение)
Билет 1. Типы и структуры данных
Структура данных — это исполнитель, который организует работу с данными, включая их хранение, добавление и удаление, модификацию, поиск и т.д. Структура данных поддерживает определенный порядок доступа к ним. Структуру данных можно рассматривать как своего рода склад или библиотеку. При описании структуры данных нужно перечислить набор действий, которые возможны для нее, и четко описать результат каждого действия. Будем называть такие действия предписаниями. С программной точки зрения, системе предписаний структуры данных соответствует набор функций, которые работают над общими переменными. Предусмотрена следующая классификация типов и структур данных:
Типы данных (простые типы) Структуры (составные типы)
-
Массивы -
Записи -
Объединения -
Множества -
Последовательности
Диапазонные
Статические
Динамические
Перечислимые
-
integer -
float -
character и
т.д.Предопределенные
Нерекурсивные -
Массивы
Рекурсивные -
Линейные списки -
Деревья -
Очереди -
Стеки -
Графы
В большинстве случаев новый тип данных строится из других типов, уже определенных (составляющих). Значения такого типа – обычно агрегаты значений-компонент, принадлежащих ранее определенным составляющим типам, и такие значения называют составными, или структурированными. Если используется только один составляющий тип, что этот тип называют базовым. Число различных значений типа Т называют его мощностью. Мощность позволяет определить объем памяти, для представления переменной х, имеющей тип Т.
Переменные и типы данных вводятся в программу для использования в вычислениях. Для вычислений нужно иметь набор операций. Поэтому для каждого стандартного типа язык программирования предлагает набор примитивных, стандартных операций, а для каждого метода структурирования – специальные операции для доступа к компонентам. Важнейшие основные операции – сравнение и присваивание, то есть проверка равенства и команда, «обеспечивающая равенство». Для стандартных примитивных типов данных также постулируются операции для создания новых значений: для числовых типов вводятся арифметические операции, для логических значений – элементарные операции логики высказываний.
Билет 2. Простые типы. Операции. Типизация.
В набор простых типов данных входят: целые и дробные числа, логические значения, а также набор литер для печати.
Int (long, short, unsigned). Данный тип представляет подмножество целых чисел, диапазон значений которых может меняться от одной вычислительной системы к другой. Предполагается, что все операции с данными этого типа являются точными и соответствуют обычным законам арифметики и что вычисление будет прервано, если результат окажется за пределом диапазона допустимых значений. Такое событие называют переполнением. Стандартные операции – 4 основные арифметические операции, остаток от деления, операция побитового сдвига.
Float (Double). Представляет подмножество вещественных чисел. Стандартные операции – арифметические операции. Особенности:
Нельзя применять операцию сдвига
Нельзя применять операцию остатка от деления
Нельзя применять поразрядные операции & (поразрядное И) | (поразрядное ИЛИ) ^ (поразрядное исключающее ИЛИ)
Boolean. Два стандартных значения этого типа: TRUE и FALSE. Булевские операции – конъюнкция(&&), дизъюнкция(||),отрицания(!) и XOR. Операции сравнения всегда вычисляют результат типа Boolean. Поэтому результат сравнения можно присвоить переменной этого типа или использовать как операнд логической операции. Точное определение операций && и ||:
p&&q = if (p) then q; else FALSE
p||q = if (p) then TRUE; else q
Булевские операции:
p |
q |
p&&q |
p||q |
!p |
p^q |
TRUE |
TRUE |
TRUE |
TRUE |
FALSE |
FALSE |
TRUE |
FALSE |
FALSE |
TRUE |
FALSE |
TRUE |
FALSE |
TRUE |
FALSE |
TRUE |
FALSE |
TRUE |
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
FALSE |
Char. Стандартный тип char представляет литеры, которые можно напечатать. Чаще всего используется множество литер ASCII. Оно содержит 95 графических(имеющих изображение) литер, а также 33 управляющих. Чтобы создавать алгоритмы для работы с литерами, которые не зависели бы от вычислительной системы, делаем несколько предположений о свойствах литер:
Тип Char содержит 26 заглавных латинских букв, 26 строчных, 10 десятичных цифр, а также некоторые другие графические символы (например, знаки препинания).
Подмножества букв и цифр упорядочены и между собой не пересекаются.
Тип содержит непечатаемые символы пробела и конца строки, которые можно использовать как разделители.
Концепция сильной типизации:
Каждый объект обладает уникальным типом
Каждый тип определяет множество значений и множество операций над ним
В каждой операции присваивания типы, стоящие в левой и правой части, должны быть эквивалентны
Каждая применяемая операция должна входить в множество допустимых операций