Студопедия

КАТЕГОРИИ:


Архитектура-(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)

Создание и редактирование бинарных деревьев

Begin

Begin

Begin

Begin

Begin

Begin

Begin

Begin

Var

Type

Implementation

Interface

Begin

Begin

Begin

Begin

Begin

Begin

Begin

Implementation

Interface

 

const stsize = 10; { предельный размер стека }

type data =...; { элементы могут иметь любой тип }

 

procedure StackInit;

procedure StackClr;

function StackPush(a: data): Boolean;

function StackPop(var a: data): Boolean;

function StackSize: Integer;

 

 

 

var sta: array [1..stsize] of data; { данные стека }

 

{ Указатель на вершину стека,

работает на префиксное вычитание }

top: Integer;

 

{ инициализация - на начало }

procedure StackInit;

top:=stsize;

end;

 

{ очистка = инициализация }

procedure StackClr;

top:=stsize;

end;

 

{ занесение элемента в стек }

function StackPush(a: data): Boolean;

if top = 0 then

StackPush:=False else

{ занесение, затем - коррекция указателя }

sta[top]:=a;

top:=top-1;

StackPush:=True;

end;

end;

 

{ выборка элемента из стека }

function StackPop(var a: data): Boolean;

if top = stsize then

StackPop:=False else

{ коррекция указатель, затем - выборка }

top:=top+1;

a:=sta[top];

StackPop:=True;

end;

end;

 

function StackSize: Integer; { определение размера }

StackSize:=stsize-top;

end;

 

end.

 

Модуль содержит вариант реализации стека на односвязном линейном списке.

 

unit stack;

 

 

type data =...; { элементы могут иметь любой тип }

 

procedure StackInit;

procedure StackClr;

function StackPush(a: data): Boolean;

function StackPop(var a: data): Boolean;

function StackSize: Integer;

 

 

 

stptr = ^stit; { указатель на элемент списка }

stit = record { элемент списка }

inf: data; { данные }

next: stptr; { указатель на следующий элемент }

end;

 

top: stptr; { указатель на вершину стека }

stsize: LongInt; { размер стека }

 

{ инициализация - список пустой }

procedure StackInit;

top:= nil;

stsize:=0;

end;

 

{ очистка - освобождение всей памяти }

procedure StackClr;

var x: stptr;

{ перебор элементов до конца списка и их уничтожение }

while top <> nil do

x:=top;

top:=top^.next;

Dispose(x);

end;

stsize:=0;

end;

 

function StackPush(a: data): Boolean; { занесение в стек }

var x: stptr;

{ если нет больше свободной памяти –

отказ; использовать только для BP 7.0 }

if MaxAvail < SizeOf(stit) then

StackPush:=False else

{ выделение памяти для элемента и заполнение информационной части }

New(x);

x^.inf:=a;

{ новый элемент помещается в голову списка }

x^.next:=top;

top:=x;

stsize:=stsize+1; { коррекция размера }

StackPush:=True;

end;

end;

 

function StackPop(var a: data): Boolean; { выборка элемента из стека }

var x: stptr;

{ список пуст - стек пуст }

if top = nil then

StackPop:=False else

{ выборка информации из первого элемента списка }

a:=top^.inf;

{ первый элемент исключается из списка, освобождается память }

x:=top;

top:=top^.next;

Dispose(x);

stsize:=stsize-1; { коррекция размера }

StackPop:=True;

end;

end;

 

function StackSize: Integer; { определение размера стека }

StackSize:=stsize;

end;

 

end.

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

 

program BinTree;

{$APPTYPE CONSOLE}

 

<== предыдущая лекция | следующая лекция ==>
Моделирование работы стека | Создание и редактирование сильноветвящихся деревьев
Поделиться с друзьями:


Дата добавления: 2014-01-07; Просмотров: 286; Нарушение авторских прав?; Мы поможем в написании вашей работы!


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



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




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