Содержание
- 2. Тема 1. Указатели © К.Ю. Поляков, 2008-2010 Динамические структуры данных (язык Паскаль)
- 3. Статические данные переменная (массив) имеет имя, по которому к ней можно обращаться размер заранее известен (задается
- 4. Динамические данные размер заранее неизвестен, определяется во время работы программы память выделяется во время работы программы
- 5. Указатели Указатель – это переменная, в которую можно записывать адрес другой переменной (или блока памяти). Объявление:
- 6. Обращение к данным через указатель program qq; var m, n: integer; pI: ^integer; begin m :=
- 7. Обращение к данным (массивы) program qq; var i: integer; A: array[1..4] of integer; pI: ^integer; begin
- 8. Что надо знать об указателях указатель – это переменная, в которой можно хранить адрес другой переменной;
- 9. Тема 2. Динамические массивы © К.Ю. Поляков, 2008-2010 Динамические структуры данных (язык Паскаль)
- 10. Где нужны динамические массивы? Задача. Ввести размер массива, затем – элементы массива. Отсортировать массив и вывести
- 11. Использование указателей (Delphi) program qq; type intArray = array[1..1] of integer; var A: ^intArray; i, N:
- 12. Использование указателей для выделения памяти используют процедуру GetMem GetMem( указатель, размер в байтах ); указатель должен
- 13. Ошибки при работе с памятью Запись в «чужую» область памяти: память не была выделена, а массив
- 14. Динамические массивы(Delphi) program qq; var A: array of integer; i, N: integer; begin writeln('Размер массива>'); readln(N);
- 15. Динамические массивы (Delphi) при объявлении массива указывают только его тип, память не выделяется: var A: array
- 16. Динамические матрицы (Delphi) Задача. Ввести размеры матрицы и выделить для нее место в памяти во время
- 17. Тема 3. Структуры (записи) © К.Ю. Поляков, 2008-2010 Динамические структуры данных (язык Паскаль)
- 18. Структуры (в Паскале – записи) Структура (запись) – это тип данных, который может включать в себя
- 19. Одна запись readln(Book.author); // ввод readln(Book.title); Book.year := 1998; // присваивание if Book.pages > 200 then
- 20. Массив записей Объявление (выделение памяти): const N = 10; var aBooks: array[1..N] of record author: string[40];
- 21. Массив записей for i:=1 to N do begin readln(aBooks[i].author); readln(aBooks[i].title); ... end; for i:=1 to N
- 22. Новый тип данных – запись const N = 10; var Book: TBook; // одна запись aBooks:
- 23. Записи в процедурах и функциях Book.author := 'А.С. Пушкин'; ShowAuthor ( Book ); Book.year := 1800;
- 24. Файлы записей Объявление файловой переменной: var F: file of TBook; Assign(F, 'books.dat'); { связать с указателем
- 25. Чтение из файла Известное число записей: Assign(F, 'books.dat'); { связать с указателем } Reset(F); { открыть
- 26. Пример программы Задача: в файле books.dat записаны данные о книгах в виде массива структур типа TBook
- 27. Пример программы Чтение «пока не кончатся»: Assign(F, 'books.dat'); Reset(F); N := 0; while not eof(F) and
- 28. Выделение памяти под запись var pB: ^TBook; begin New(pB); pB^.author := 'А.С. Пушкин'; pB^.title := 'Полтава';
- 29. Сортировка массива записей Ключ (ключевое поле) – это поле записи (или комбинация полей), по которому выполняется
- 30. Сортировка массива записей for i:=1 to N-1 do for j:=N-1 downto i do if aBooks[j].year >
- 31. Сортировка массива записей Проблема: как избежать копирования записи при сортировке? Решение: использовать вспомогательный массив указателей, при
- 32. Реализация в программе type PBook = ^TBook; { новый тип данных } var p: array[1..N] of
- 33. Тема 4. Списки © К.Ю. Поляков, 2008-2010 Динамические структуры данных (язык Паскаль)
- 34. Динамические структуры данных Строение: набор узлов, объединенных с помощью ссылок. Как устроен узел: Типы структур: списки
- 35. Когда нужны списки? Задача (алфавитно-частотный словарь). В файле записан текст. Нужно записать в другой файл в
- 36. Что такое список: пустая структура – это список; список – это начальный узел (голова) и связанный
- 37. Что нужно уметь делать со списком? Создать новый узел. Добавить узел: а) в начало списка; б)
- 38. Создание узла function CreateNode(NewWord: string): PNode; var NewNode: PNode; begin New(NewNode); NewNode^.word := NewWord; NewNode^.count :=
- 39. Добавление узла в начало списка 1) Установить ссылку нового узла на голову списка: NewNode^.next := Head;
- 40. Добавление узла после заданного 1) Установить ссылку нового узла на узел, следующий за p: NewNode^.next =
- 41. Задача: сделать что-нибудь хорошее с каждым элементом списка. Алгоритм: установить вспомогательный указатель q на голову списка;
- 42. Добавление узла в конец списка Задача: добавить новый узел в конец списка. Алгоритм: найти последний узел
- 43. Проблема: нужно знать адрес предыдущего узла, а идти назад нельзя! Решение: найти предыдущий узел q (проход
- 44. Добавление узла перед заданным (II) Задача: вставить узел перед заданным без поиска предыдущего. Алгоритм: поменять местами
- 45. Поиск слова в списке Задача: найти в списке заданное слово или определить, что его нет. Функция
- 46. Куда вставить новое слово? Задача: найти узел, перед которым нужно вставить, заданное слово, так чтобы в
- 47. Удаление узла procedure DeleteNode ( var Head: PNode; p: PNode ); var q: PNode; begin if
- 48. Алфавитно-частотный словарь Алгоритм: открыть файл на чтение; прочитать очередное слово (как?) если файл закончился, то перейти
- 49. Как прочитать одно слово из файла? function GetWord ( F: Text ) : string; var c:
- 50. Полная программа type PNode = ^Node; Node = record ... end; { новые типы данных }
- 51. Полная программа (II) { читаем слова из файла, строим список } while True do begin {
- 52. Полная программа (III) { выводим список в другой файл } q := Head; { проход с
- 53. type PNode = ^Node; { указатель на узел } Node = record { структура узла }
- 54. Задания «4»: «Собрать» из этих функций программу для построения алфавитно-частотного словаря. В конце файла вывести общее
- 55. Тема 5. Стеки, очереди, деки © К.Ю. Поляков, 2008-2010 Динамические структуры данных (язык Паскаль)
- 56. Стек Стек – это линейная структура данных, в которой добавление и удаление элементов возможно только с
- 57. Пример задачи Задача: вводится символьная строка, в которой записано выражение со скобками трех типов: [], {}
- 58. Решение задачи со скобками Алгоритм: в начале стек пуст; в цикле просматриваем все символы строки по
- 59. Реализация стека (массив) Структура-стек: const MAXSIZE = 100; type Stack = record { стек на 100
- 60. Реализация стека (массив) function Pop ( var S:Stack ): char; begin if S.size = 0 then
- 61. Программа var br1, br2, expr: string; i, k: integer; upper: char; { то, что сняли со
- 62. Обработка строки (основной цикл) for i:=1 to length(expr) do begin for k:=1 to 3 do begin
- 63. Реализация стека (список) Добавление элемента: Структура узла: type PNode = ^Node; { указатель на узел }
- 64. Реализация стека (список) Снятие элемента с вершины: function Pop ( var Head: PNode ): char; var
- 65. Реализация стека (список) Изменения в основной программе: var S: Stack; ... S.size := 0; var S:
- 66. Вычисление арифметических выражений a b + c d + 1 - / Как вычислять автоматически: Инфиксная
- 67. Запишите в постфиксной форме (32*6-5)*(2*3+4)/(3+7*2) (2*4+3*5)*(2*3+18/3*2)*(12-3) (4-2*3)*(3-12/3/4)*(24-3*12)
- 68. Вычисление выражений Постфиксная форма: a b + c d + 1 - / Алгоритм: взять очередной
- 69. Системный стек (Windows – 1 Мб) Используется для размещения локальных переменных; хранения адресов возврата (по которым
- 70. Очередь Очередь – это линейная структура данных, в которой добавление элементов возможно только с одного конца
- 71. Реализация очереди (массив) самый простой способ нужно заранее выделить массив; при выборке из очереди нужно сдвигать
- 72. Реализация очереди (кольцевой массив)
- 73. Реализация очереди (кольцевой массив) В очереди 1 элемент: Очередь пуста: Очередь полна: Head = Tail +
- 74. Реализация очереди (кольцевой массив) type Queue = record data: array[1..MAXSIZE] of integer; head, tail: integer; end;
- 75. Реализация очереди (кольцевой массив) Выборка из очереди: function Pop ( var S: Queue ): integer; begin
- 76. Реализация очереди (списки) type PNode = ^Node; Node = record data: integer; next: PNode; end; type
- 77. Реализация очереди (списки) procedure PushTail( var Q: Queue; x: integer ); var NewNode: PNode; begin New(NewNode);
- 78. Реализация очереди (списки) function Pop ( var S: Queue ): integer; var top: PNode; begin if
- 79. Дек Дек (deque = double ended queue, очередь с двумя концами) – это линейная структура данных,
- 80. Задания «4»: В файле input.dat находится список чисел (или слов). Переписать его в файл output.dat в
- 81. Тема 6. Деревья © К.Ю. Поляков, 2008-2010 Динамические структуры данных (язык Паскаль)
- 82. Деревья
- 83. Деревья Дерево – это структура данных, состоящая из узлов и соединяющих их направленных ребер (дуг), причем
- 84. Деревья Предок узла x – это узел, из которого существует путь по стрелкам в узел x.
- 85. Дерево – рекурсивная структура данных Рекурсивное определение: Пустая структура – это дерево. Дерево – это корень
- 86. Двоичные деревья Структура узла: type PNode = ^Node; { указатель на узел } Node = record
- 87. Двоичные деревья поиска Слева от каждого узла находятся узлы с меньшими ключами, а справа – с
- 88. Двоичные деревья поиска Поиск в массиве (N элементов): При каждом сравнении отбрасывается 1 элемент. Число сравнений
- 89. Реализация алгоритма поиска { Функция Search – поиск по дереву Вход: Tree - адрес корня, x
- 90. Как построить дерево поиска? { Процедура AddToTree – добавить элемент Вход: Tree - адрес корня, x
- 91. Обход дерева Обход дерева – это перечисление всех узлов в определенном порядке. Обход ЛКП («левый –
- 92. Обход дерева – реализация { Процедура LKP – обход дерева в порядке ЛКП (левый – корень
- 93. Разбор арифметических выражений a b + c d + 1 - / Как вычислять автоматически: Инфиксная
- 94. Вычисление выражений Постфиксная форма: a b + c d + 1 - / Алгоритм: взять очередной
- 95. Вычисление выражений Задача: в символьной строке записано правильное арифметическое выражение, которое может содержать только однозначные числа
- 96. Построение дерева Алгоритм: если first=last (остался один символ – число), то создать новый узел и записать
- 97. Как найти последнюю операцию? Порядок выполнения операций умножение и деление; сложение и вычитание. Приоритет (старшинство) –
- 98. Приоритет операции { Функция Priority – приоритет операции Вход: символ операции Выход: приоритет или 100, если
- 99. Номер последней операции { Функция LastOperation – номер последней операции Вход: строка, номера первого и последнего
- 100. Построение дерева Структура узла type PNode = ^Node; Node = record data: char; left, right: PNode;
- 101. Построение дерева { Функция MakeTree – построение дерева Вход: строка, номера первого и последнего символов рассматриваемой
- 102. Вычисление выражения по дереву { Функция CalcTree – вычисление по дереву Вход: адрес дерева Выход: значение
- 103. Основная программа { Ввод и вычисление выражения с помощью дерева } program qq; var Tree: PNode;
- 104. Дерево игры Задача. Перед двумя игроками лежат две кучки камней, в первой из которых 3, а
- 105. Дерево игры 3, 2 игрок 1 3, 6 27, 2 3, 18 3, 3 4, 2
- 106. Задания «4»: «Собрать» программу для вычисления правильного арифметического выражения, включающего только однозначные числа и знаки операций
- 107. Тема 7. Графы © К.Ю. Поляков, 2008-2010 Динамические структуры данных (язык Паскаль)
- 108. Определения Граф – это набор вершин (узлов) и соединяющих их ребер (дуг). Направленный граф (ориентированный, орграф)
- 109. Определения Связный граф – это граф, в котором существует цепь между каждой парой вершин. k-cвязный граф
- 110. Описание графа Матрица смежности – это матрица, элемент M[i][j] которой равен 1, если существует ребро из
- 111. Матрица и список смежности
- 112. Построения графа по матрице смежности
- 113. Как обнаружить цепи и циклы? Задача: определить, существует ли цепь длины k из вершины i в
- 114. Как обнаружить цепи и циклы? M2 = M ⊗ M Логическое умножение матрицы на себя: матрица
- 115. Как обнаружить цепи и циклы? M3 = M2 ⊗ M Матрица путей длины 3: M3 =
- 116. Весовая матрица Весовая матрица – это матрица, элемент W[i,j] которой равен весу ребра из вершины i
- 117. Задача Прима-Краскала Задача: соединить N городов телефонной сетью так, чтобы длина телефонных линий была минимальная. Та
- 118. Жадный алгоритм Жадный алгоритм – это многошаговый алгоритм, в котором на каждом шаге принимается решение, лучшее
- 119. Реализация алгоритма Прима-Краскала Проблема: как проверить, что 1) ребро не выбрано, и 2) ребро не образует
- 120. Реализация алгоритма Прима-Краскала Структура «ребро»: type rebro = record i, j: integer; { номера вершин }
- 121. Реализация алгоритма Прима-Краскала for k:=1 to N-1 do begin min := MaxInt; for i:=1 to N
- 122. Сложность алгоритма Основной цикл: O(N3) for k:=1 to N-1 do begin ... for i:=1 to N
- 123. Кратчайшие пути (алгоритм Дейкстры) Задача: задана сеть дорог между городами, часть которых могут иметь одностороннее движение.
- 124. Алгоритм Дейкстры
- 125. Реализация алгоритма Дейкстры Массивы: массив a, такой что a[i]=1, если вершина уже рассмотрена, и a[i]=0, если
- 126. Реализация алгоритма Дейкстры Основной цикл: если все вершины рассмотрены, то стоп. среди всех нерассмотренных вершин (a[i]=0)
- 127. Реализация алгоритма Дейкстры Шаг 2: Шаг 3:
- 128. Как вывести маршрут? Результат работа алгоритма Дейкстры: длины путей Маршрут из вершины 0 в вершину 4:
- 129. Алгоритм Флойда-Уоршелла Задача: задана сеть дорог между городами, часть которых могут иметь одностороннее движение. Найти все
- 130. Алгоритм Флойда-Уоршелла Версия с запоминанием маршрута: for i:= 1 to N for j := 1 to
- 131. Задача коммивояжера Задача коммивояжера. Коммивояжер (бродячий торговец) должен выйти из первого города и, посетив по разу
- 132. Другие классические задачи Задача на минимум суммы. Имеется N населенных пунктов, в каждом из которых живет
- 134. Скачать презентацию





![Обращение к данным (массивы) program qq; var i: integer; A: array[1..4] of](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/896123/slide-6.jpg)



![Использование указателей (Delphi) program qq; type intArray = array[1..1] of integer; var](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/896123/slide-10.jpg)








![Массив записей Объявление (выделение памяти): const N = 10; var aBooks: array[1..N]](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/896123/slide-19.jpg)
![Массив записей for i:=1 to N do begin readln(aBooks[i].author); readln(aBooks[i].title); ... end;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/896123/slide-20.jpg)




















































![Реализация очереди (кольцевой массив) type Queue = record data: array[1..MAXSIZE] of integer;](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/896123/slide-73.jpg)



































![Описание графа Матрица смежности – это матрица, элемент M[i][j] которой равен 1,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/896123/slide-109.jpg)





![Весовая матрица Весовая матрица – это матрица, элемент W[i,j] которой равен весу](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/896123/slide-115.jpg)








![Реализация алгоритма Дейкстры Массивы: массив a, такой что a[i]=1, если вершина уже](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/896123/slide-124.jpg)







Соединения в ЭВМ
Программы для обработки звука
Использование_строк_для_решения_задач_защиты_информации
Реляционная модель данных
Отчет по учебной практике Сетевое и системное администрирование
Браузеры. Виды и отличия
Юридическая компания Астрея. Кейс
Исследования протоколов VoIP и разработка конфигурации сети для объединения офисов предприятия
Architecture. Приложение Application Object
Использование 3D max для создания домика
Mengindentifikasi. Ancaman. Tolak. Ukur. Mengindefikasi. Risiko
Основные свойства информационных банков СПС
Система отмены действий
OASIS DDB децентрализованная база данных. Преимущества и выгоды простым и понятным языком
Компьютерная инди-игра в жанре песочницы Minecraft
Всё есть число. Пифагорийцы
Warsztat kreatywny. Projekt
Социальные группы
Как записаться в объединение дополнительного образования?
Модели и типы данных
Информация и информационные процессы
Устройства компьютера. Основные стандартные устройства персонального компьютера
Сетевые информационные технологии
Comunio. Онлайн футбольный фэнтези-менеджер
Web-сервис для отдела по приему автомобилей предприятия Автотрейд
Начала алгоритмизации и программирования
Что нужно знать о рерайте
Interneta pakalpojumu izmantošanai nepieciešamais aprīkojums un izplatītākie pakalpojumu veidi