
Документ без названия
Динамические структуры данных       К динамическим структурам данных относят: стеки списки очереди деревья Стек – структура, где каждый элемент связан с соседним и формируется по принципу: «последний пришел – первый пришел»       Стек можно представить либо массивом либо линейным списком. При представлении массивом нужно указать границу между свободной и занятой частями массива. Эту границу называют вершиной стека. Фактически вершина стека – это либо индекс последнего включенного в стек элемента либо индекс первого свободного элемента массива.       При программировании на Паскаль стек чаще всего реализуется в виде однонаправленного списка. Каждый элемент структуры содержит указатель на следующий. Доступ возможен только к верхнему элементу.       Стек предполагает вставку и удаление элементов, поэтому он считается динамической постоянно меняющейся структурой. Значением указателя, представляющего стек, является ссылка на вершину стека, каждый элемент стека содержит поле ссылки.       Если стек пуст, то значение указателя равно Nil.       Описание стека:       Type           EXST=^ST;           ST=record               Data: integer;               Next: EXST;           End;       Var           Stack: EXST; {текущая переменная}     Операции со стеком: Операция Пример Занесение элемента в стек     Процедура занесения элемента в стек должна содержать два параметра: первый задает вершину стека, в который нужно занести элемент, второй – заносимое значение элемента стека. Procedure FormStack; Var     Stack: EXST;     Digit: integer; Procedure WriteStack (Var u: EXST; Digit: integer); Var     X: EXST; Begin     New (x); {выделяем память под хранение нового элемента}     x^.Data:= Digit; {заполнение поле данных}     x^.Next:=u; {новый элемент связали со стеком}     u:=x; {создали элемент определенного как вершину} End; Begin     Stack:=Nil; {инициализация}     Writeln ('Ввод элементов. Окончание - 0');     Read (Digit);     Write Stack (Stack, Digit);     Read (Digit); End; End. Извлечение элемента из стека Procedure ReadStack (var u: EXST; var i: integer); Var     x: EXST; Begin     i:=u^.Data; {считываем значение поля данных в переменную}     x:=u; { запомнили адрес вершины}     u:=u^.Next; {перенесли вершину наследующий элемент}     Dispose (x); {освободили память занятым элементом} End. Очередь – структура данных, при которой изъятие компонента происходит из начала цепочки, а запись в конец цепочки. При организации очереди используют два указателя – один на начало, а другой на конец (begin0, end0 – начало и конец очереди )       Описание очереди: Type     EXO=^0;     0=record         Data: integer;         Next: EXO;     End; Var     Begin0, End0: EXO;       Над очередью определены две операции: занесение элемента в очередь извлечение элемента из очереди       Пример 1.       Procedure Write0 (Var Begin0, End0:EXO; e: integer);       Var           u:EXO;       Begin           New (u);           u^.Data:=e;           u^.Next:=Nil;           if Begin0=Nil then {пуста ли очередь}               Begin0:=u {ставим указатель начала на первый созданный элемент}           else               End0^.Next:=u; {ставим созданный элемент в конец очереди}               End0:=u; {переносим указатель конца на последний элемент}       End; Дерево – это структура, которая характеризуется следующими свойствами: cуществует единственный элемент (узел или вершина) на который не ссылается никакой другой элемент и который называется корнем начиная с корня и следуя по определенной цепочке указателей, содержащихся в элементах, можно осуществить доступ к любому элементу структуры на каждый элемент, кроме корня, имеется единственная ссылка, т.е адрес единственного указателя       Существует несколько способов изображения дерева. Рассмотрим их: Способ Изображение Диаграмма Вела Вложенных скобок A(B((D(I))), E (Y,K,L), C(F(O), G(M,N), H(P)) По уровню (оглавления книг) Исходное дерево       Основные понятия: Упорядоченное дерево – дерево, у которого ветви каждого узла упорядочены. Потомок (Х)– узел у, который находится под узлом х. Терминальный элемент– элемент, который не имеет потомка. Внутренний узел - элемент, который не является терминальным. Степень узла - число потомков внутреннего узла. Степень дерева - максимальная степень всех узлов. Длина пути - число ветвей, которое нужно пройти, чтобы продвинутся от корня к узлу Бинарное дерево - упорядоченное дерево со степенью 2. Компоненты бинарного дерева имеют 3 поля: 1 – информационное, которое содержит число или символ 2,3 – ссылки на предыдущий и последующий компонент дерева Во многих случаях требуется осуществить систематический просмотр всех узлов бинарного дерева в определенном порядке. Такой просмотр называется обходом дерева. Бинарное дерево можно обойти 3 способами: Нисходящий (от корня вниз к листьям) Восходящий (от листьев вверх к корню) Смешанный (от левого узла корня к правому)