- •Введение
- •1 Основные понятия о типах и структурах данных
- •2 Простейшие статические структуры
- •2.1 Характерные свойства статических структур
- •2.2 Векторы
- •2.3 Массивы
- •2.4 Записи
- •2.5 Таблицы
- •2.6 Характерные свойства статических структур
- •3 Полустатические структуры
- •3.1 Общее понятие списковой структуры
- •3.2 Стеки
- •3.3 Очереди
- •3.4 Деки
- •4 Линейные динамические структуры
- •4.1 Характерные черты динамических структур
- •4.2 Односвязные списки
- •4.3 Двусвязные списки
- •4.4 Организация и представление линейных связных списков в памяти эвм
- •4.5 Представление стеков, очередей и деков линейными списками
- •5 Нелинейные связные структуры
- •5.1 Обобщенные двусвязные списки
- •5.2 Многосвязные списки
- •5.3 Сетевые структуры
- •5.4 Деревья
- •5.5 Бинарные деревья
- •6 Строковые данные
- •6.1 Строки
- •6.2 Векторное представление строк
- •6.3 Списковое представление строк
- •7 Файлы
- •7.1 Организация файлов на устройствах внешней памяти
- •7.2 Основные типы файлов
- •7.3 Последовательные файлы
- •7.4 Библиотечные файлы
- •7.5 Файлы прямого доступа
- •7.6 Индексно-последовательные файлы
- •8 Системы управления базами данных
- •8.1 Сущность базы данных и системы управления базами данных
- •8.2 Классификация банков данных и их составных частей
- •8.3 Иерархическая и сетевая модели баз данных
- •8.4 Реляционная модель базы данных
- •9 Задачи и упражнения
- •9.1. Векторы
- •9.2 Матрицы
- •9.3 Строки
- •9.4 Записи и таблицы
- •9.5 Списки
- •9.6 Очереди, стеки, деки
- •9.7 Двоичные деревья
- •Библиографический список
- •Содержание
- •Структуры данных
- •650049, Красноярск, пр.Мира 82.
3 Полустатические структуры
3.1 Общее понятие списковой структуры
Списковой структурой, или списком, называется линейно - упорядоченная последовательность элементов данных Е(1), Е(2), ... , Е(n), где n>0, причем каждый элемент характеризуется одним и тем же набором полей. Такой список называют также линейным списком вследствие линейной упорядоченности его элементов. Упорядоченность элементов списка может задаваться неявно путем последовательного расположения его элементов как в логической структуре, так и в памяти машины. Такой список будем называть последовательным. С другой стороны, упорядоченность элементов может задаваться с помощью специальных указателей, или связок, располагаемых в элементах и дающих возможность для каждого элемента определить его предшественника или пользователя, или того и другого. Такие списки называются связными списками.
Ясно, что при n=const и соответствующем выборе элемента данных последовательный список сводится к вектору, массиву, записи или таблице. Например, вектор - такой последовательный список, в котором каждый элемент - скаляр одного и того же типа. Если допустить изменение длины списка n, то на основе последовательного списка можно получить структуры данных, не удовлетворяющие свойству постоянства. Такие структуры называются полустатическими. Наиболее известные примеры полустатических структур - стеки, очереди и деки. Они характеризуются ограниченным доступом.
3.2 Стеки
Стек - такой последовательный список с переменной длиной, включение и исключение элементов из которого выполняются только с одной стороны списка. Стек функционирует по принципу LIFO (Last - In - First - Out - "последним пришел - первым исключается"). Наиболее известные примеры стека - винтовочный патронный магазин и железнодорожный разъезд для сортировки вагонов.
Логическая структура стека представлена на рис. 3.1. На этом рисунке Е1, Е2, ... Еn - обозначения элементов стека, каждый из которых может содержать одно или несколько полей данных.
|
Верхняя граница стека |
® |
|
ü ú ý þ |
|
|
|
|
. . . |
Свободные слоты | |
|
|
|
|
|
Указатель стека |
|
Адрес верхнего
элемента |
® |
|
¬ |
|
|
|
|
|
| |
|
|
|
. . . |
|
|
|
|
|
|
|
|
|
Нижняя граница стека |
® |
|
|
|
|
| ||||
|
Рис.3.1 - Логическая структура стека | ||||
Важнейшие операции доступа к стеку - включение элементов и исключение элементов - осуществляются с вершины стека, причем в каждый момент для исключения доступен элемент Еn, находящийся на вершине стека. Вершина стека адресуется с помощью специального указателя. Для включения нового элемента в стек указатель сначала перемещается "вверх" на длину слота, или ячейки, а затем по значению указателя в стек помещается информация о новом элементе. При исключении элемента из стека сначала прочитывается информация об исключаемом элементе по значению указателя, а затем указатель смещается "вниз" на один слот. Стек считается пустым, если указатель смещен "вниз" на длину одной ячейки относительно низа стека. Используется также такая схема, в которой указатель адресует первую свободную ячейку списка.
Другие операции над стеком, кроме включения и исключения элементов, - очистка стека и проверка объема стека (т.е. проверка числа элементов в стеке).
Для хранения стека в памяти машины отводится сплошная область памяти, достаточно большая, чтобы в ней можно было поместить некоторое максимальное число элементов. Граничные адреса этой области являются параметрами физической структуры стека. Если в процессе заполнения стека указатель, перемещаясь "вверх", выходит за границу первоначально отведенной области памяти, то происходит переполнение стека, в результате чего становится невозможным включение в стек нового элемента. При отсутствии переполнения некоторая часть области памяти, отведенной для стека, свободна для включения новых элементов, как показано на рис. 3.1. Таким образом, хотя длина стека может изменяться в процессе его использования, эти изменения не должны выходить за пределы фиксированного участка памяти. Поэтому стек - полустатическая структура данных.
Физическая структура стека дополняется обычно дескриптором, в котором содержатся кроме указателя имя стека, границы физической структуры в памяти, а также описание элемента. На рис. 3.2 приведен пример физической структуры стека, причем символ ST в первом поле дескриптора является кодом стека.
|
|
|
|
ST |
Имя стека |
|
|
|
|
|
| |||||
|
|
|
|
Адрес верхней границы |
· |
|
|
|
|
|
| |||||
|
|
|
|
Указатель |
· |
|
|
|
|
|
| |||||
|
|
|
|
· |
Адрес нижней границы |
|
|
|
|
|
| |||||
|
|
|
|
Описание элемента |
|
|
|
|
|
| ||||||
|
| |||||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Слоты для элементов стека | |||||||||||||||
|
| |||||||||||||||
|
Рис. 3.2 - Схема физической структуры стека | |||||||||||||||






