Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АЯП лекции.doc
Скачиваний:
12
Добавлен:
03.12.2018
Размер:
634.37 Кб
Скачать

Нерекурсивное формирование дерева

Сложность нерекурсивного формирования дерева заключается в то, что на каждом шаге построения дерева необходимо запомнить количество элементов в поддеревьях и кроме адреса не достроенного элемента необходимо обеспечить барьер, для того чтобы обратное восхождение по дереву осуществлялось именно до этого барьера.

type ref=^node;

node=record

key: integer;

l,r: ref; end;

var i,n,nl,nr,x: integer;

root,p,q,r,dmy: ref;

s:array[1..30] of record;

n: integer;

rf: ref; end;

begin read(n); new(root); new(dmy); i:=1;

s[1].n:=n; s[1].rf:=root;

repeat n:=s[i].n; r:=s[i].rf; i:=i+1;

if n=0 then r^.r:=nil else begin p:=dmy;

repeat nl:=ndw2; nr:=n-nl-1; read(x);

new(q); q^.key:=x; i:=i+1; s[i].n:=nr; s[i].rf:=q; n:=nl;

p^.l:=q; p:=q;

until n=0;

q^.l:=nil; r^.r:=dmy^.l; end;

until i:=0; end.

При работе с динамической памятью можно использовать нетипизированый указатель. В ячейку памяти выделенную под указатель POINTER можно размещать любую информацию.

Для выделения памяти используем процедуру NEW(<…>).

Для высвобождения памяти используем DISPOSE(<…>).

Недостатком данной процедуры является образование «дырок» в «куче».

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]