Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
шпора информатика.doc
Скачиваний:
13
Добавлен:
24.09.2019
Размер:
689.66 Кб
Скачать

10. Динамические структуры. Линейная структура - стек. Предст в памяти пк.

В Паскале исп-ся динам. вел-ны, для них выделение и очистка памяти происходит в ходе выполнения самой программы (работа же по размещению статических объектов в памяти машины вып-ся на этапе трансляции). Несмотря на богатый набор типов данных в Паскале, он не исчерпывает всего практически необходимого для разработки многих классов программ. В частности из разнообразных связанных структур данных в языке стандартизированы массивы и файлы, кроме них могут потребоваться схожие с ними иные стр-ры, к которым и относ-ся динам-кие(стеки, очереди, деревья), для них хар-ны след-щие признаки: 1) неопред-ное заранее ч-ло эл-тов; 2) необход-сть хранения в оперативной памяти.

Стек - упорядоченный набор эл-ов, в кот-м добавление новых эл-ов и удаление сущ.-х производится с одного конца, называемого вершиной стека. (пр. детская пирамидка). Данные из стека извлекаются в обратном порядке записи. В любой момент времени доступен 1 элемент стека - вершина стека. Стек предпол-ет вставку и удаление элементов и по этому он явл диномическ структур данных, постоянно меняющейся. Основные операции: запись, извлечение, поиск. Каждый эл-т стека имеет поле ссылки на след эл-т.

Значением указателя (X1) представляющ стек явл ссылка на вершину стека, каждое звено стека содержит на след звено списка. (элемент занесенный в стек первым имеет ссылку NIL). Для раелиз такой стр-ры использ тип записи.

type Stek=^st; st=Record data:integer; next:stek; end;

var stack:Stek{текущая переменная}

если стек пуст то значение указателя д.б. NIL.

Рассм проц-ру занесения в стек. Эта проц-ра дол содерж 2 парам.(1-задаёт нужный стек, 2-занос-ые в него знач-я)

Обозн-им их соотв Х1 и С. поскольку наверх. Элем стека ссылается указ-ль пред-ий стек, то занесение в стек произв-ся аналог-но вставке нового элем- та в начало списка.

Извлечение элем-та из списка. В результате выполнения этой операции некоторой переменная i должно быть просвоено значение верхнего эл-та стека, а звено содержащее этот эл-т должно быть удалено из списка. Для удаления запомним адрес следующего за вершиной звена в переменной u и затем освободим обл памяти занимаемой звеном с вершиной стека с помощью проц-ры Diespose после этого останется сменить зн-ие указ-ля нач списка.

Лиин-я ст-ра-очередь. Очередь-это упоряд-ный набор эл-ов, в кот удаление происходит с одного конца, а добавление с другого.оч явл динам стр-рой с течением времени изменяется её длина и набор составляющий её эл-ов. Опэтому очень удобно её представить в виде списка.

Описание оч на языке прог-ия Паскаль

Type Och=^O; O=record Data:integer; Next:och.End;

Над очередью оперд 2 операции(занесение эл-та в очередь и извлечение элемента по средствам его удаления). В очереди доступны 2 позиции: ее конец и ее начало откуда извлекаются. Поэтому для работы с очередью необходимо описать 2 переменные var x1,x2:och; x1-начало и служит для вывода эл-та из очереди, x2-конец для добавления новых эл-ов. Поскольку оч представлена списком занесение эл-та в оч соотв занесению эл-та в конец списка.

Процедура выбора элем-та из очер аналог удален элемента из начала списка. Т.к. выбор элемента из пустой очереди сделать нельзя м. описать логическую ф-ю провер есть ли элементы в очереди.

Деревья. Деревом наз произвольно связанный граф без циклов, или иными словами это граф, в кот каждая пара вершин соединена простой цепью. Пример: Узел наз вершиной. С кажд вершиной связ конечн число отдельн деревьев(поддеревья). Вершина j наход ниже верш i наз потомком i, а i для j предком, если верш не имеет потомком то она наз листом, а если имеет то внутр вер-ой. Число потомков внутр вершины наз степенью. Макс степень всех вершин-степень дерева. Если из вершины дерева исходит не более 2 ребер то такое дерево наз бинарным. Дерево это слож струк-ра данных примен-ся для эфф-го хран-я инфор-ии. Очевидно, что для описания дерева требуется ссылки. Опишем вершины как переменные с фиксир стр-рой, тогда степень дерева будет определять число ссылочных компонент, указывающих на вершины поддеревьев. В бинарном дереве их две - лев и прав. На языке паскаль это описание м.б сделано таким образом.

Type TreeLink=^tree;

Tree=Record

Data:<тип данных>;

Left, Right: TreeLink;

End;

Var Kor: TreeLink {корень дерева}.

В памяти дерево представляется в след виде(аналог список):