Скачать презентацию Глава 10 Динамические структуры данных Стек — Скачать презентацию Глава 10 Динамические структуры данных Стек —

Динамические структуры.pptx

  • Количество слайдов: 28

Глава 10. Динамические структуры данных Глава 10. Динамические структуры данных

Стек - это специальный тип списка, в котором все вставки и удаления выполняются только Стек - это специальный тип списка, в котором все вставки и удаления выполняются только на одном конце, называемом вершиной (TOP или HEAD). Для обозначения стеков используют аббревиатуру LIFO (Last-in-First-out).

Очередь - это специальный тип списка, в котором все вставки выполняются в одном конце, Очередь - это специальный тип списка, в котором все вставки выполняются в одном конце, называемом последним (REAR), а удаления выполняются в другом конце, называемом начальным (FRONT). Для обозначения очереди используют аббревиатуру FIFO (First-in-First-out).

Список Списки - это структуры данных, которые доступны для вставки и удаления элементов в Список Списки - это структуры данных, которые доступны для вставки и удаления элементов в любой позиции списка. Односвязные списки - это списки, перемещение по которым возможно только в прямом или в обратном направлении. Элем 1 Элем 2 Элем 3 Двусвязные списки - это списки, перемещение по которым возможно как в прямом, так в обратном направлении.

Вставка элемента в список Односвязный Двусвязный Вставка элемента в список Односвязный Двусвязный

Удаление элемента из списка Односвязный Двусвязный Удаление элемента из списка Односвязный Двусвязный

§ 10. 1 Списки § 10. 1 Списки

Объявление //Инфо-часть //Указатель на предыдущий //Указатель на следующий Объявление //Инфо-часть //Указатель на предыдущий //Указатель на следующий

Инициализация списка //Память //На вход - указатель //результат - указатель //Считали всю //инфо-часть //Расставили Инициализация списка //Память //На вход - указатель //результат - указатель //Считали всю //инфо-часть //Расставили //ссылки //Вернули измененный указатель

Добавление элемента в конец //На вход – указатель //результат - указатель //Память для нового Добавление элемента в конец //На вход – указатель //результат - указатель //Память для нового элемента //Считали всю //инфо-часть //нового элемента //Расставили //ссылки //Вернули указатель //на новый последний элемент

Ссылки 1 -ый … H Последний temp Последний NULL Ссылки 1 -ый … H Последний temp Последний NULL

Печать, проверка на пустоту //чтобы не портить H – копируем в temp //идем в Печать, проверка на пустоту //чтобы не портить H – копируем в temp //идем в начало //идем до конца //Распечатать инфо-часть //Вернуть1, если список пуст //иначе - 0

Поиск по значению char[] //искомый элемент //чтобы не портить H – копируем в temp Поиск по значению char[] //искомый элемент //чтобы не портить H – копируем в temp //считываем искомый элемент //идем с конца в начало списка //если элемент найден //печатаем //идем дальше //возвращаем количество найденных элементов

Главная программа //Объявление списка //Меню //Выбор пользователя Главная программа //Объявление списка //Меню //Выбор пользователя

Главная программа //Создание списка //первый элемент //или последующие //Печать списка //если он не пуст Главная программа //Создание списка //первый элемент //или последующие //Печать списка //если он не пуст //Поиск элемента

Программа Программа

§ 10. 2 Деревья § 10. 2 Деревья

Принцип построения Принцип построения

Объявление Объявление

Добавление элементов //если дерево пусто //выделяем память //заполняем всю инфо-часть //из параметров //расставляем //ссылки Добавление элементов //если дерево пусто //выделяем память //заполняем всю инфо-часть //из параметров //расставляем //ссылки //если дерево не пусто //возвращаем //указатель //на вершину //дерева //если введенный элемент //меньше корня //рекурсивно заполняем //левое поддерево //иначе - правое

Обходы дерева 1) Прямой: Корень, Поддеревья (КЛП, КПЛ) 2) Обратный: Поддеревья, Корень (ЛПК, ПЛК) Обходы дерева 1) Прямой: Корень, Поддеревья (КЛП, КПЛ) 2) Обратный: Поддеревья, Корень (ЛПК, ПЛК) 3) Симметричный: Поддерево, Корень Поддерево (ПКЛ, ЛКП) Последний дает отсортированный список всех элементов дерева.

Симметричный обход - ЛКП $$ 1, 2, 3, 4, 5, 6, 7, 8, 9, Симметричный обход - ЛКП $$ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15

Обходы дерева – реализация //если дерево пусто – выходим //иначе начинаем обходить //дерево рекурсивно Обходы дерева – реализация //если дерево пусто – выходим //иначе начинаем обходить //дерево рекурсивно //порядок имеет значение!

Поиск по значению int //если дерево пусто – выходим //иначе начинаем искать //по дереву Поиск по значению int //если дерево пусто – выходим //иначе начинаем искать //по дереву рекурсивно //выход из рекурсии //если эл-т найден //возвращаем указатель на него //иначе ищем в поддеревьях

Главная программа //Объявление дерева //Меню //Выбор пользователя Главная программа //Объявление дерева //Меню //Выбор пользователя

Главная программа //считываем данные //передаем их в ф-ю //добавляем элемент //в дерево //Прямой обход Главная программа //считываем данные //передаем их в ф-ю //добавляем элемент //в дерево //Прямой обход //Симметричный обход //Обратный обход

Главная программа //считываем int для поиска //вызываем функцию //печатаем первый //найденный элемент Главная программа //считываем int для поиска //вызываем функцию //печатаем первый //найденный элемент

Программа Программа