
Реализация списка:
Для реализации списка на базе массива определим тип запись, содержащую 2 поля: поле массив, в котором будут храниться элементы списка и поле для позиции последнего элемента списка. Начало списка будет всегда в первой ячейке массива.
T
1
2
3
4
5
6
N
L
15
6
22
7
Last=4.
Рис. 7
List=record
Element:array[1..100]of integer;
Last:byte;
End;
Процедуры обработки списка:
При реализации списков с помощью массивов элементы списка располагаются в смежных ячейках массива. Это представление позволяет легко просматривать содержимое списка и вставлять новые элементы в его конец. Но вставка нового элемента в середину списка требует перемещения всех последующих элементов на одну позицию к концу массива. Удаление элемента также требует перемещения элементов, чтобы закрыть освободившуюся ячейку.
Контрольные вопросы:
Какие структуры данных называются статическими? Приведите примеры.
Какие структуры данных называют динамическими? Приведите примеры.
Что такое стек?
Опишите реализацию стека на базе массива.
Напишите процедуру удаления элемента из стека.
Определите эффективность процедур обработки стека.
Что такое очередь?
Опишите реализацию очереди на базе массива.
Определите эффективность процедур обработки очереди.
Что такое список?
Опишите реализацию списка на базе массива.
Какие операции необходимо выполнить, чтобы удалить элемент из списка?
Какие операции необходимо выполнить, чтобы вставить элемент в список?
Какие операции необходимо выполнить, чтобы вставить элемент в очередь?
Определите эффективность процедур обработки линейного списка.
Объясните, как можно реализовать очередь на базе двух стеков?
Упражнения
Задача 1. Написать программу, которая реализует стек целых чисел. Программа должна содержать процедуры вставки нового элемента в стек, удаления элемента из стека, процедуру вывода стека. Выбор операции оформить в виде меню.
Задача 2. Напишите программу, которая переводит любое десятичное число в любую систему счисления q≤16. Для хранения остатков целочисленного деления использовать стек.
Задача 3. Написать программу, которая реализует очередь, в которую записываются символы. Программа должна содержать процедуры вставки нового элемента в очередь, удаления элемента из очереди, процедуру вывода очереди с головы. Оформить меню.
Задача 4. На базе массива создайте очередь с приоритетами (приоритетную очередь), в которой элементы упорядочены согласно своему приоритету.
Задача 5. Создайте список на базе массива. Напишите процедуру вставки нового элемента в список целых чисел. В качестве параметров передать указатель на конец списка и номер позиции, на которую вставляется новый элемент. Оформить меню.
Задача 6. Создайте упорядоченный по возрастанию список целых чисел на базе массива.
Задача 7. Напишите процедуру удаления элемента из списка целых чисел. В качестве параметров передать указатель на конец списка и номер удаляемого элемента.
Задача 8. Отсортировать элементы стека с помощью двух дополнительных стеков, реализованных на базе массива (задача о Ханойских башнях).