
- •Билет 2 Лексическая структура языка Pascal.
- •Билет 3 Структура Pascal-программы. Составной оператор. Константы. Переменные.
- •Билет 4. Концепция переменной языка паскаль.
- •Билет 5 Концепция типа данных языка Pascal.
- •Билет 6 Простые типы.
- •Билет 7 Стандартные типы языка Pascal.
- •Билет 8 Тип Boolean
- •Билет 9 Перечисляемый тип.
- •Билет 10. Ограниченные типы (диапазоны).
- •Билет 11 Условный оператор
- •Билет 12 Оператор варианта
- •Билет 13 Оператор цикла с постусловием
- •Билет 14 Оператор цикла с предусловием
- •Билет 15 Оператор цикла с параметром
- •Билет 16 Составные типы
- •Билет 17 Массивы, примеры использования
- •Билет 18 Записи, примеры использования
- •Билет 19 Оператор сцепления
- •Билет 20 Записи с вариантами
- •Билет 21 Множества (определение, примеры, операции).
- •Билет 22 Представления множеств, примеры использования.
- •Билет 22. Представления множеств.
- •Билет 23 Файловые типы
- •Билет 24 Операции с файлами
- •Билет 25 Текстовые файлы
- •Билет 26 Типизированные файла
- •Билет 27 Нетипизированные файлы
- •Билет 28 Процедуры и функции
- •Билет 29 Описание процедур и функций
- •Билет 30 Локальные и глобальные переменные
- •Билет 31 Параметры процедур и функций
- •Билет 32 открытые параметры.
- •Билет 33. Нетипизированные параметры.
- •Билет 34. Необходимость и преимущества модульного программирования. Структура модуля в языке Pascal.
- •Билет 35. Процедурный тип. Передача процедур и функций в качестве параметра.
- •Билет 36. Рекурсия.
- •Билет 37. Рекурсия и итерация.
- •Билет 38. Линейный поиск.
- •Билет 39. Поиск делением пополам.
- •Билет 40. Сортировка.
- •Билет 41. Сортировка простыми включениями.
- •Билет 42. Сортировка бинарными включениями
- •Билет 43. Сортировка простым выбором.
- •Билет 44. Сортировка простым обменом(пузырек).
- •Билет 45. Шейкер-сортировка.
- •Билет 46. Сортировка шелла.
- •Билет 47. Сортировка с разделением(быстрая сортировка).
- •Билет 48. Ссылочные типы.
- •Билет 49. Динамические структуры данных.
- •Билет 50. Создание и уничтожение динамических переменных.
- •Билет 51. Связные списки.
- •Билет 52. Связные списки. Создание очередного элемента. Просмотр списка.
- •Билет 53. Добавление компонента в середину списка.
- •Билет 54. Исключение компонент из середины списка.
- •Билет 55. Рекурсивная обработка списка.
- •Билет 56. Двусвязные кольца.
- •Билет 57. Деревья. Двоичные деревья. Двоичные деревья поиска.
- •Билет 58. Добавление узла к двоичному дереву поиска.
- •Билет 59. Поиск в двоичном дереве.
- •Билет 60. Просмотр двоичного дерева.
- •Билет 61. Удаление из дерева.
- •Билет 62. Деревья общего вида.
Билет 57. Деревья. Двоичные деревья. Двоичные деревья поиска.
Предположим у нас некоторая структура, состоящая из записей связанных между собой системами ссылок. Причем каждая запись может содержать ссылки на несколько других записей. Так представляются направленные графы. Вершинами или узлами графа является записи, ссылки играют роль ребер. Частным случаем графа является дерево, которое имеет следующее св-во:
- подструктура связанных с некоторыми узлами не связаны между собой;
- существует узел наз. корнем, из которого просмотром конечного числа ребер может достичь любого узла дерева.
На рисунке узел А – это корень, узла Г,Д,Е,Ж,И,К,Л – терминал узла или листья.
Дерево является рекурсивной структурой. Рекурсивное определение: дерево либо пуста, либо состоит из узла содержащего ссылки на непересекающиеся деревья.
Каждый узел двоичного дерева имеет не более двух узлов отростков. Эти два отростка наз. левым и правым отросткам. Эти два отростка не являются взаимозаменяемыми.
Для представления двоичного дерева в Паскале удобно пользоваться записями.
type Link=^Node;
Node=record
Data:char;
Left,Right:Link; End;
Просмотр двоичного дерева можно производится рекурсивно, для каждого узла нужно выполнить следующие действия:
1. исследовать узел, т.е. выполнить какие то операции;
2. просмотреть левое поддерево;
3. просмотреть правое.
Эти три шага могут выполнять шесть различных последовательности. Благодаря существующим традиционным соглашением о том, что левая поддерево всегда просматривается перед правым кол-во возможных способов снижается до трех. Три оставшихся способа имеют спец. наименования:
1. прямой просмотр – сначала исследуется узел затем левое и правое поддеревья;
2. обратный просмотр – исследуется левое поддерево узел правое;
3. концевой просмотр – узел исследуется после просмотра поддеревьев.
Рекурсивная процедура, выполняющая прямой просмотр дерева:
procedure preorder (tree:Link);
begin
if tree<>nil then
begin
dosomething(tree); {исследуем узел}
preorder(tree^.Left);
preorder(tree^.Right);
end;
end;
Другие виды просмотра могут быть получены путем перестановки трех операторов вход. во внутренний составной оператор. При различных порядках просмотра дерево изображенное на рис. а узлы исследуются в следующие последовательности.
След. последовательность: Д,Б,А,Г,В,Е,З,Ж,И
Обратная последовательность: А,Б,В,Г,Д,Е,Ж,З,И
Концевая: А,В,Г,Б,Ж,И,З,Е,Д
Обратная просмотр приводит к возникновению упорядочности узлов по алфавиту.
Дерево изображенное на рис. а является двоичным деревом поиска.
Дерево наз. двоичным деревом поиска, если для каждого узла ti все ключи в левом поддереве меньше ключа ti а ключи в правом поддереве больше ti.
В дереве поиска можно найти место каждого ключа, начиная от корня и переходя на левые и правые поддеревья в зависимости от значения ключа.
Билет 58. Добавление узла к двоичному дереву поиска.
к двоичному дереву один узел, сохраняя его упорядоченность.
procedure insert (var tree: Link; newdata: char);
begin
if tree=nil then
begin new(tree);
with tree^ do
begin Left:=nil; Right:=nil;
Data:=newdata;
end;
end;
end;
with tree^ do
if newdata<data then
insert(Left,newdata)
else
if newdata>data then
insert(Right,newdata);
else {продублировать информацию если равна}
end;