- •1. Типы данных
- •2. Стандартные типы пользователя
- •3. Структуры данных
- •4. Классификация структур данных
- •Векторы
- •5. Записи и таблицы.
- •34. Сортировка методом прямого включения
- •6. Понятие списковой структуры. Стек.
- •7. Очередь.
- •Insert (q, X)
- •8) Пример работы с очередью с использованием стандартных процедур.
- •9.Кольцевые полустатические очереди. Операции над кольцевой очередью
- •10. Понятие Динамических структур данных. Организация односвяз. И двусвяз. Списков. Простейшие операции над односвяз списками
- •11. Реализация стеков с помощью (односвязных) списков
- •12. Смысл и организация операций создания и удаления элемента динамической структуры. Понятие свободного списка и пула свободных эл-ов. Утилизация освободившихся элементов
- •13. Очередь и операции над ней при реализации со связными списками.
- •14. Операции вставки и извлечения элементов из списка. Сравнение этих операций с аналогичными массивами. Недостаток связного списка по сравнению с массивом.
- •1 5. Пример алг реш зад извлечения эл-ов из списка по заданному признаку.
- •16. Пример алг решения зад. Вставки заданных элементов в упорядоченный список.
- •17. Элементы заголовков в списках; нелинейные связные структуры.
- •18. Понятие рекурсивных структур данных. Деревья, их признаки и представления
- •19. Алгоритм сведения m-арного дерева к бинарному; основные операции над деревьями; виды обхода
- •20. Понятие поиска, ключей; назначение и структура алгоритмов поиска
- •21. Последовательный поиск и его эффективность
- •22. Индексно-последовательный поиск
- •23. Переупорядочивание таблиц с учетом вероятности поиска элемента; переупорядочивание путем перестановки в начало списка
- •24) Метод оптимизации поиска путем (Переупорядочивание таблицы) перестановки найденного элемента в начало списка
- •25. Метод транспозиции при оптимизированном поиске (для переупорядочивания таблицы поиска
- •26. Бинарный поиск
- •27. Алгоритм создания упорядоченного бинарного дерева
- •29. Поиск по бинарному дереву с включением
- •33. Сортировка методом прямого выбора
- •30. Поиск по бинарному дереву с удалением
- •28. Эффективность поиска по бинарному дереву
- •31. Алгоритмы прохождения бинарных деревьев
- •32. Понятие сортировки, ее эффективность; классификация методов сортировки
- •35. Сортировка методом прямого обмена (пузырьковая).
- •36. Быстрая сортировка
- •37. Сортировка Шелла
- •38. Сортировка с помощью бинарного дерева
- •39. Сравнительный анализ эффективности методов сортировки
- •40. Нерекурсивный алгоритм обхода дерева в прямом порядке
40. Нерекурсивный алгоритм обхода дерева в прямом порядке
Пусть T – указатель на бинарное дерево; А – стек, в который заносятся адреса еще не пройденных вершин; TOP – вершина стека; P – рабочая переменная.
Начальная установка: TOP:=0; P:=T.
Если P=nil, то перейти на 4. {конец ветви}
Вывести P^.info. Вершину заносим в стек: TOP:=TOP+1; A[TOP]:=P; шаг по левой ветви: P:=P^.llink; перейти на 2.
Если TOP=0, то КОНЕЦ.
Достаем вершину из стека: P:=A[TOP]; TOP:=TOP-1; Шаг по правой связи: P:=P^.rlink; перейти на 2.
Реализация нерекурсивного алгоритма поиска может выглядеть следующим образом:
Function Locate(x: integer; T: Link):Link; var found: boolean; begin found:= false; while (T <> nil) and not found do if T^.elem = x then found := true else if T^.elem > x then T:=T^. left else T:=T^.right; Locate := T end;
Для упрощения процедуры поиска можно использовать дерево с узлом-барьером (последний пустой узел z, в который засылается элемент для поиска x)
function Locate(x: integer; T: Link):Link; begin z^.elem:=x; while T^.elem <> x do if T^.elem > x then T:=T^. left else T:=T^.right; Locate := T end;