Задания для самостоятельной работы
Структуры данных
Цель практического занятия по данной теме – рассмотреть основные виды структур данных: линейные списки и их разновидности, а также операции над ними.
Списки
Линейным списком ( просто списком) называется конечная последовательность элементов, взятая из некоторого множества. Различают списки односвязные, двусвязные, кольцевые, кольцевые двусвязные, а также их специфические варианты – стек и очередь. В односвязном списке каждый элемент, кроме последнего, содержит ссылку на следующий элемент в списке, т.е. у каждого элемента есть два поля: имя и указатель (рис. 6.1а). Структура списка (рис. 6.1б) содержит указатель на первый элемент (First), который является внешним. Эта структура данных позволяет заносить элемент в список и удалять элемент из списка без перемещения остальных элементов, т.е. без переобозначения их индексов. Заметим, что элементом списка может быть достаточно сложная структура данных, в том числе и список. Рассмотрим процедуры вставки элемента INS(NEL, FREE, POS) и удаления элемента DEL(POS) при работе с различными списками. Здесь NEL – новый элемент, FREE – индекс первой свободной ячейки, POS – позиция того элемента, после которого нужно вставить (удалить) элемент. Пример 6.1. Задан список, состоящий из 6 элементов. Требуется выполнить следующее задание. 1. Записать список в виде двух массивов NAME и NEXT. 2. Вставить элемент А34 между А3 и А4; показать, как при этом изменяются массивы. 3. Удалить из исходного списка А5; показать, как при этом изменяются массивы. Решение представлено в табл. 6.1 – 6.3, состоящих из трех основных столбцов: индекса, имени элемента – NAME и указателя на следующий элемент – NEXT.
Таблица 6.2 Таблица 6.3
Двусвязный список В двусвязном списке присутствует система двойных указателей, поэтому в таблице добавляется столбец PREV (previous - предыдущий), указывающий на связи с предыдущим элементом. Пример 6.2. Для двусвязного списка, состоящего из 6 элементов (рис. 5.2.), выполнить то же задание, что и в примере 6.1.
Таблица 6.4 Таблица 6.5
Таблица 6.6
Кольцевой список Рассмотрим кольцевой список, в котором последний элемент имеет указатель на первый элемент. Пример 6.3. Задан кольцевой список, состоящий из шести элементов (рис. 6.3.); выполнить то же задание, что и в примере 6.1.
Решение опять представим в виде таблиц с тремя столбцами: индекс, имя и указатель на следующий элемент.
Таблица 6.7
Стек Рассмотрим работу со стеком. Стек представляется массивом, в таблице – это столбец NAME. Вершина стека определяется значением переменной ТОР. Ввод и вывод элемента производится на одном конце списка. При работе со стеком производятся следующие операции: вставка - TOP:=TOP + 1; <ввод элемента>; удаление – <удаление элемента>; ТОР:= ТОР – 1; Пример 6.4. В стек (рис. 6.4) поступило 4 элемента el1, el2, el3, el4. 1. Записать представление такого стека в виде массива NAME. 2. Вставить элемент el5. 3. Удалить элемент el4 (из исходного массива).
Рис. 6.4 Очередь Рассмотрим работу с очередью. Здесь ввод производится в один конец очереди (начало очереди), а вывод – из другого (конец очереди). В таблице для очереди используются указатели: BACK – конец очереди, FORWARD – начало очереди. Пример 6.5. Очередь в текущий момент состоит из 5 элементов (рис.6.5); первые 9 элементов отсутствуют.
Рис. 6.5
4. Задан стек. Произвести ввод и удаление элементов (табл. 6.15).
Решение может быть представлено в виде трех таблиц, состоящих из двух основных столбцов: индекс и указатели FORWARD, BACK, задающие направление очереди, а также имя элемента.
Таблица 6.11
Таблица 6.12
Таблица 6.13
Задания для самостоятельной работы В первых трёх заданиях список состоит из семи элементов; количество элементов стека определяется указателем TOP.
Таблица 6.14
Таблица 6.15
Воспользуйтесь поиском по сайту: ©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...
|