
- •1. Условный оператор, оператор выбора
- •5. Метод пошаговой детализации (последовательного уточнения) разработки алгоритмов.
- •2. Операторы организации циклов
- •3. Обработка двумерных массивов.
- •4. Процедуры и функции
- •37. Алгоритмы генерирования k-элементных подмножеств множества
- •6. Использование множеств для решения задач
- •7. Процедуры и функции обработки строк
- •8. Сортировка и поиск информации. Методы внутренней сортировки: Сортировка «пузырек»
- •9.Сортировка подсчетом.
- •10.Сортировка простым обменом
- •11. Методы внутренней сортировки: «Шейкер-сортировка»
- •12. Методы внутренней сортировки: Сортировка «Хаора»
- •14. Методы внутренней сортировки: Пирамидальная сортировка
- •16.Сортировка бинарными вставками
- •17. Методы внутренней сортировки: Сортировка «Шелла»
- •15 Сортировка простыми вставками.
- •19.Чтение типизированных файлов
- •18. Сортировка слиянием
- •20.Алгоритмы удаления записей типизированного файла.
- •19.Сортировка естественным слиянием.
- •28. Динамическая структура очередь, ее создание и использование.
- •20. Поразрядная сортировка
- •32. Деревья: построение бинарного дерева
- •52.Чтение типизированных файлов
- •21. Рекуррентные выражения. Рекурсия: прямая и косвенная.
- •22.Стандартные процедуры и функции Unit Graph.
- •53.Алгоритмы удаления записей типизированного файла.
- •27. Динамическая структура стек, ее создание и использование.
- •34. Алгоритмы генерирования перестановок (антилексикографическом порядке )
- •29. Списки: односвязные
- •33. Алгоритм генерирования перестановок в лексикографическом порядке.
- •30.Списки: двухсвязные
- •31. Динамическая структура кольцо, ее создание и использование.
- •34. Алгоритмы генерирования перестановок
- •51. Создание типизированных файлов.
- •36. Алгоритмы генерирования множества всех подмножеств
- •65. Создание таблиц базы данных с помощью Database Desktop.
- •38. Введение в теорию графов. Способы представления ориентированных и неориентированных графов: матрицы смежности
- •39. Поиск в ширину в графе
- •40. Поиск в глубину в графе
- •41,42. Построение остовного дерева графа.
- •43. Поиск кратчайшего пути в графе (Алгоритм Дейкстры)
- •44.Алгоритм Форда поиска кратчайших расстояний в графе.
- •45.Алгоритм Флойда поиска кратчайших расстояний в графе.
- •46. Алгоритмы с возвращением, их реализация с помощью рекурсий и динамических структур. Примеры алгоритмов с возвращением.
- •50.Типизированные файлы, их назначение и использование. Основные процедуры обработки типизированных файлов
- •47,48. Типы файлов, объявление, логическая и физическая организация файловой системы, процедуры и функции обработки файлов
- •67,68 Компоненты страниц Data Access, Data Controls. Создание базы данных, псевдонима бд
- •62 Компоненты страницы Samples, их назначение, свойства, примеры применения
- •56.Полиморфизм. Виртуальные методы. Таблица виртуальных методов
- •54.Понятие объекта.(класса). Инкапсуляция. Иерархия классов (типов). Правила наследования
- •57. Компоненты страницы Standard, их назначение, свойства, примеры применения.
- •49. Нетипизированные файлы
- •58.Компоненты страницы Additional, их назначение, свойства, примеры применения
- •1. TBitBtn
- •2. TSpeedButton
- •3. TMaskEdit
- •4. TDrawGrid
- •60. Компоненты страницы System, их назначение, свойства, примеры применения
- •71. Создание справочной системы
- •61,. Компоненты страницы Dialogs их назначение, свойства, примеры применения
- •63. Задание и изменение свойств компонентов с помощью Инспектора объектов и программно
- •64. Обработка событий, связанных с использованием компонентов.
- •70. Мультимедийные возможности Delphi
- •66. Создание и использование модуля данных Data Module.
- •69. Графические возможности Delphi
30.Списки: двухсвязные
Линейный двусвязный список (linear double—linked list) дает возможность двигаться в одном из двух направлений. Он отличается от односвязного тем, что каждый его элемент содержит два логических указателя, один из которых (прямой указатель — direct pointer) адресует, как и в односвязном списке, следующий элемент, а другой указатель (обратный — backward pointer) адресует предыдущий элемент списка. Логическая структура линейного двусвязного списка (ЛДС) представлена на рис. 7.11. Заметим, что начало и конец такого списка логически эквивалентны, так как доступ к любому элементу может быть осуществлен с любого конца списка.
Описания типов и переменных, необходимые для линейного двусвязного списка, показаны на рис. 7.12.
Tyре Рt = ^Ваsеtyре;
Ваsеtуре = Rесоrd
Kеу : Integer;
DРоint, Вроint : Рt;
Dаtа: ...
еnd;
Vаr
Left, Сurrent, Right : Рt;
Рис. 7.12. Описания типов и переменных, соответствующие структуре ЛДС
Текст программы формирования ЛДС, состоящего из N элементов, приводится на рис. 7.13. Формирование списка осуществляется "справа — налево", то есть первый из созданных в динамической памяти элементов списка адресуется указателем Right, а последний (левый) — указателями Left и Сurrent. Если бы мы захотели, чтобы по завершении работы этой процедуры текущий указатель Сurrent располагался на правом конце списка, то после строки, содержащей end {¬While}, нужно было бы расположить оператор Сurrent : = Right;
Рrосеdurе Сеnerаtion_LDL (N : Word;
Vаr Left, Right, Сurrent : Рt);
{¬РЕЗУЛЬТАТЫ:
1) формирует ЛДС, содержащий N элементов типа Ваsеtуре (если N=0, то список пуст, Left=Right=Nil);
2) Left и Сurrent указывают на левый конец списка (последний из созданных элементов), указатель Right адресует элемент (он создается первым), расположенный на правом конце;
3) в поле Kеу элементов заносятся их номера в порядке возрастания значений "слева-направо"}
Vаr i :Word;
Веgin
Left := Nil; Right := Left;
I :=N;
Whilе i>0 Do
Веgin
New (Сurrent);
Сurrent^.DРоint := Left;
Сurrent^.ВРоint := Nil;
If i=N Тhen Right := Current
Else Current^.DPoint^.ВРоint :=Сurrent;
Left ;= Сurrent;
Сurrent^.Kеy := i;
i := i+1
еnd {¬Whilе}
Епd {¬Gеneration_LDL};
Рис. 7.13. Текст Паскаль-процедуры Generation_LDL
Для просмотра списка, созданного подпрограммой Gеneration_LDL, может быть использован фрагмент, представленный на рис. 7.14; при "работе" этого фрагмента список просматривается слева направо.
While Current<>Nil Do
{¬..действия над полями элемента Сurrent}
Current := Current^.DРоint;
еnd {¬Whilе};
Рис. 7.14. Программный фрагмент для просмотра ЛДС слева направо