Динамические структуры.pptx
- Количество слайдов: 28
Глава 10. Динамические структуры данных
Стек - это специальный тип списка, в котором все вставки и удаления выполняются только на одном конце, называемом вершиной (TOP или HEAD). Для обозначения стеков используют аббревиатуру LIFO (Last-in-First-out).
Очередь - это специальный тип списка, в котором все вставки выполняются в одном конце, называемом последним (REAR), а удаления выполняются в другом конце, называемом начальным (FRONT). Для обозначения очереди используют аббревиатуру FIFO (First-in-First-out).
Список Списки - это структуры данных, которые доступны для вставки и удаления элементов в любой позиции списка. Односвязные списки - это списки, перемещение по которым возможно только в прямом или в обратном направлении. Элем 1 Элем 2 Элем 3 Двусвязные списки - это списки, перемещение по которым возможно как в прямом, так в обратном направлении.
Вставка элемента в список Односвязный Двусвязный
Удаление элемента из списка Односвязный Двусвязный
§ 10. 1 Списки
Объявление //Инфо-часть //Указатель на предыдущий //Указатель на следующий
Инициализация списка //Память //На вход - указатель //результат - указатель //Считали всю //инфо-часть //Расставили //ссылки //Вернули измененный указатель
Добавление элемента в конец //На вход – указатель //результат - указатель //Память для нового элемента //Считали всю //инфо-часть //нового элемента //Расставили //ссылки //Вернули указатель //на новый последний элемент
Ссылки 1 -ый … H Последний temp Последний NULL
Печать, проверка на пустоту //чтобы не портить H – копируем в temp //идем в начало //идем до конца //Распечатать инфо-часть //Вернуть1, если список пуст //иначе - 0
Поиск по значению char[] //искомый элемент //чтобы не портить H – копируем в temp //считываем искомый элемент //идем с конца в начало списка //если элемент найден //печатаем //идем дальше //возвращаем количество найденных элементов
Главная программа //Объявление списка //Меню //Выбор пользователя
Главная программа //Создание списка //первый элемент //или последующие //Печать списка //если он не пуст //Поиск элемента
Программа
§ 10. 2 Деревья
Принцип построения
Объявление
Добавление элементов //если дерево пусто //выделяем память //заполняем всю инфо-часть //из параметров //расставляем //ссылки //если дерево не пусто //возвращаем //указатель //на вершину //дерева //если введенный элемент //меньше корня //рекурсивно заполняем //левое поддерево //иначе - правое
Обходы дерева 1) Прямой: Корень, Поддеревья (КЛП, КПЛ) 2) Обратный: Поддеревья, Корень (ЛПК, ПЛК) 3) Симметричный: Поддерево, Корень Поддерево (ПКЛ, ЛКП) Последний дает отсортированный список всех элементов дерева.
Симметричный обход - ЛКП $$ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
Обходы дерева – реализация //если дерево пусто – выходим //иначе начинаем обходить //дерево рекурсивно //порядок имеет значение!
Поиск по значению int //если дерево пусто – выходим //иначе начинаем искать //по дереву рекурсивно //выход из рекурсии //если эл-т найден //возвращаем указатель на него //иначе ищем в поддеревьях
Главная программа //Объявление дерева //Меню //Выбор пользователя
Главная программа //считываем данные //передаем их в ф-ю //добавляем элемент //в дерево //Прямой обход //Симметричный обход //Обратный обход
Главная программа //считываем int для поиска //вызываем функцию //печатаем первый //найденный элемент
Программа