- •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. Нерекурсивный алгоритм обхода дерева в прямом порядке
13. Очередь и операции над ней при реализации со связными списками.
Указатель начала списка принимаем за указатель начала очереди F, а указатель R, указывающий на последний элемент списка - за указатель конца очереди.
Операция удаления из очереди (Remove(Q, X)).
Операция удаления из очереди должна проходить из ее начала.
If F = nil
then print “Очередь пуста”
Stop
endif
P = F
F = Ptr(P)
X = Info(P)
FreeNode(P)
return
Проверка очереди на пустоту. (Empty (Q))
If F = nil
then print “Очередь пуста”
Stop
endif
return
Операция вставки в очередь. (Insert(Q, X))
Операция вставки в очередь должна осуществляться к ее концу.
P = GetNode
Info(P) = x
Ptr(P) = Nil
Ptr(R)= P
R = P
Return
14. Операции вставки и извлечения элементов из списка. Сравнение этих операций с аналогичными массивами. Недостаток связного списка по сравнению с массивом.
Просмотр односвязного списка может производиться только последовательно, начиная с головы (с начала) списка. Если необходимо просмотреть предыдущий элемент, то надо снова возвращаться к началу списка. Это – недостаток по сравнению с массивами.
Списковая структура проявляет свои достоинства по сравнению с массивами тогда, когда число элементов списка велико, а вставку или удаление необходимо произвести внутри списка.
Пример Необходимо вставить элемент X в существующий массив между 5-м и 6-м элементами.
Для проведения данной операции в массиве нужно сместить “вниз” все элементы, начиная с X6 - увеличить их индексы на единицу. В результате вставки получаем следующий массив:
Данная процедура в больших массивах может занимать значительное время.
В противоположность этому, в связанном списке операция вставки состоит в изменении значения 2-х указателей и генерации свободного элемента. Причём время, затраченное на выполнение этой операции, является постоянным и не зависит от количества элементов в списке.
Вставка и извлечение элементов из списка
Сначала определяем элемент, после которого необходимо провести операцию вставки или удаления.
Вставка производится с помощью процедуры InsAfter(P, x), а удаление - DelAfter(P).
При этом рабочий указатель P должен указывать на элемент, после которого необходимо произвести вставку или удаление.
Вставка InsAfter(P, x)
Пусть необходимо вставить новый элемент с информационным полем x после элемента, на который указывает рабочий указатель P.
Q = GetNode
info(Q) = x
ptr(Q) = ptr(P)
ptr(P) = Q
return
Удаление DelAfter(P)
Пусть необходимо удалить элемент списка, который следует после элемента, на который указывает рабочий указатель P.
Q = ptr(P)
X = info(Q)
ptr(P) = ptr(Q)
FreeNode(Q)
return
Просмотр односвязного списка при вставке и удалении
Обозначим через P - рабочий указатель; в начале процедуры P = Lst.
Введем также указатель Q, который отстает на один элемент от P ; в начале процедуры Q = nil.
Когда указатель P получит значение nil , цикл просмотра заканчивается.
Q =Nil
P = Lst
while (P <> nil) do
Q = P
P = ptr(P)
endwhile
return