КАТЕГОРИИ: Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748) |
Связанные динамические данные
Основные определения
Линейные списки - это данные динамической структуры, которые представляют собой совокупность линейно связанных однородных элементов и для которых разрешены следующие действия: - добавление элемента в начало (голову) списка; - вставка элемента между двумя любыми другими элементами списка; - удаление любого, как крайнего, так и среднего, элемента списка. Кольцевые списки - это такие же данные, как и линейные списки, но имеющие дополнительную связь между последним и первым элементом списка. Очередь - частный случай линейного односвязного списка, для которого разрешены только два действия: добавление элемента в конец (хвост) очереди и удаление элемента из начала (головы) очереди. Стек - частный случай линейного односвязного списка, для которого разрешено добавлять или удалять элементы только с одного конца списка, который называется вершиной (головой) стека. Деревья - это динамические данные иерархической структуры произвольной конфигурации. Элементы дерева называются вершинами (узлами). Пирамидой (упорядоченным деревом) называется дерево, в котором значения вершин (узлов) всегда возрастает или убывает при переходе на следующий уровень.
Организация взаимосвязей в связанных динамических данных
Связанные динамические данные характеризуются высокой гибкостью создания структур данных различной конфигурации. Это достигается благодаря возможности выделять и освобождать память под эти элементы в любой момент времени работы программы и возможности установить связь между любыми двумя элементами с помощью указателей. Для организации связей между элементами динамической структуры данных требуется, чтобы каждый элемент содержал креме информационных значений как минимум один указатель. Отсюда следует, что в качестве элементов таких структур необходимо использовать записи, которые могут объединять в единое целое разнородные элементы. В простейшем случае элемент динамической структуры данных должен состоять из двух полей: информационного и указательного. Объявление будет иметь такой вид: type cptr=^zap; zap=record inf:integer; link:cptr; end; Тип указателя на элемент динамической структуры данных может и должен быть описан перед описанием типа этого элемента.
Работа с очередью
Для создания очереди и работы с ней необходимо иметь как минимум два указателя: - на начало очереди (возьмем идентификатор begp) - на конец очереди (возьмем идентификатор тор) Кроме того, для освобождения памяти удаляемых элементов требуется дополнительный временный указатель (возьмем идентификатор Р).
Создание очереди 1. Исходное состояние: begp:=nil; endp:=nil; 2. Выделение памяти под первый элемент очереди: new(p); 3. Занесение информации в первый элемент очереди: p^.inf:=x; p^.link:=nil 4. Установка указателей begp и endp на созданный первый элемент: begp:=p; endp:=p;
Добавление элемента очереди 1. Исходное состояние. 2. Выделение памяти под новый элемент и занесение в него информации: new(p); p^.inf:=x; p^.link:=nil; 3. Установка связи между последним элементом очереди и новым, а также перемещение указателя конца очереди endp на новый элемент: endp^.link:=p; endp:=p;
Удаление элемента очереди 1. Исходное состояние. 2. Извлечение информации из удаляемого элемента в переменную x и установка на него вспомогательного указателя Р: x:=begp^.inf; p:=begp; 3. Перестановка указателя начала очереди begp на следующий элемент, используя значение поля p^.link, которое хранится в первом элементе. После этого освобождается память начального элемента очереди, используя дополнительный указатель Р: begp:=p^.link; dispose(p);
Дата добавления: 2014-01-20; Просмотров: 448; Нарушение авторских прав?; Мы поможем в написании вашей работы! Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет |