Студопедия

КАТЕГОРИИ:


Архитектура-(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; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.008 сек.