.: Menu :.
Home
Реферати
Книги
Конспекти уроків
Виховні заходи
Зразки документів
Реферати партнерів
Завантаження
Завантажити
Електронні книги


????????...

 
��������...
Процедури обробки черг і стеків 


Процедури обробки черг і стеків

Д И Н А М І Ч Н І    С Т Р У К Т У Р И
Д А Н И Х
Структуровані типи даних,  такі, як масиви, множини, записи, являють   собою статичні структури,  тому що їхні розміри незмінні протягом усього часу виконання програми.
Часто потрібно, щоб структури даних змінювали свої розміри в ході рішення задачі.   Такі структури даних називаються динамічними,  до  них відносяться стеки,  черги, списки, дерева й інші.
Опис динамічних структур  за допомогою масивів,  записів і
файлів приводить до нераціонального використання пам'яті ЕОМ і збільшує час рішення задач.
Кожний компонент будь-якої динамічної структури являє  собою запис, що містить   принаймні два полю чи:  одне поле типу вказівник, а  друге - для розміщення даних.  У загальному випадку запис може містити не   один,  а декілька вказівників і кілька полів даних.
Поле даних може бути змінною,  масивом, множиною або записом.
Опис цього компонента дамо в такий спосіб:
type
Pointer = ^Comp;
Comp = record
D:T;
pNext:Pointer
end;
тут T - тип даних.
Розглянемо основні правила  роботи  з  динамічними  структурами даних типу стек, черга.

С Т Е К И
Стеком називається динамічна структура даних, додавання компонента в яку і виключення компонента з  якої відбувається  з одного кінця, який називається вершиною стека. Стік працює за принципом
LIFO (Last-In, First-Out) – останнім прийшов, першим пішов.
Звичайно над стеками виконується три операції:
-початкове формування стеку (запис першого компонента);
-додавання компонента в стек;
-вибірка компонента (вилучення).
Для формування стека і роботи з ним необхідно мати  два  перемінні типу вказівник,  перша з яких визначає вершину стека, а друга - допоміжна. Нехай опис цих перемінних має вигляд:
var pTop, pAux: Pointer;
де pTop - покажчик вершини стека; pAux - допоміжний покажчик. Початкове формування стека виконується наступними операторами:
New(pTop);
pTop^.pNext:=NIL;
pTop^.sD:=sC

Останній оператор або група операторів записує вміст поля чи даних першого компонента.   Додавання компонента в стек відбувається з використанням допоміжного вказівника:
Додавання наступних компонентів виробляється аналогічно.
NEW(pAux);
pAux^.pNext:=pTop;
pTop:=pAux;
pTop^.sD:=sC
Розглянемо процес вибірки компонент зі стека.
sC:=pTop^.sD;
pTop:=pTop^.pNext

Приклад. Скласти програму,  що формує стек, додає в нього довільну кількість компонентів, а потім читає усі компоненти і виводить їх на екран,  як дані взяти рядок символів. Введення даних - з клавіатури , ознака кінця введення – рядок символів END.

Program STACK;
uses Wincrt;
type  Alfa= String[10];
PComp= ^Comp;
Comp= Record
sD: Alfa;
pNext: PComp
end;
var pTop: PComp; sC: Alfa;

Procedure CreateStack(var pTop: PComp; var sC: Alfa);
begin
New(pTop);
pTop^.pNext:=NIL;
pTop^.sD:=sC
end;

Procedure AddComp(var pTop: PComp; var sC: Alfa);
var pAux: PComp;
begin
NEW(pAux);
pAux^.pNext:=pTop;
pTop:=pAux;
pTop^.sD:=sC
end;
Procedure DelComp(var pTop: PComp; var sC:ALFA);
begin
sC:=pTop^.sD;
pTop:=pTop^.pNext
end;
begin
Clrscr;
writeln('  ВВЕДІТЬ РЯДОК ');
readln(sC);
CreateStack(pTop,sC);
repeat
writeln('  ВВЕДІТЬ РЯДОК ');
readln(sC);
AddComp(pTop,sC)
until sC='END';
writeln('****** РЕЗУЛЬТАТИ ВИКОНАННЯ ******');
repeat
DelComp(pTop,sC);
writeln(sC);
until pTop = NIL
end.

Ч Е Р Г И
Чергою називається динамічна структура даних, додавання компонента в яку здійснюється в кінець, а вибірка здійснюється з іншого кінця. Черга працює за принципом:
FIFO (First-In, First-Out) – першим прийшов – першим пішов.
Для формування черги і роботи з нею необхідно мати три змінні типу вказівник,  перша з яких  вказує на початок  черги, друга – на кінець черги, третя - допоміжна.
Опис компоненти черги і змінних типу вкзівник дамо в такий спосіб:
type
PComp=^Comp;
Comp=record
D:T;
pNext:PComp
end;
var
pBegin, pEnd, pAux: PComp;

де pBegin - вказівник початку черги, pEnd - вказівник кінця  черги, pAux - допоміжний вказівник.
Тип Т визначає тип даних компоненту черги.
Початкове формування черги виконується наступними операторами:
New(pBegin);
pBegin^.pNext:=NIL;
pBegin^.sD:=sC;
pEnd:=pBegin
Додавання компонента в чергу відбувається в кінець черги:
New(pAux);
pAux^.pNext:=NIL;
pEnd^.pNext:=pAux;
pEnd:=pAux;
pEnd^.s:=s
Додавання наступних компонентів  відбувається
аналогічно.
New(pAux);
pAux^.pNext:=NIL;
pEnd^.pNext:=pAux;
pEnd:=pAux;
pEnd^.sD:=sC

Вибірка компонента  з  черги  здійснюється з початку черги, одночасно компонента виключається з черги. 
Вибірка компонента виконується наступними операторами:
sC:=pBegin^.sD;
pBegin:=pBegin^.pNext










Приклад. Скласти програму,  що формує чергу, додає в неї довільна кількість компонентів, а потім читає усі компоненти і виводить їх на екран дисплея. Як дані взяти рядок символів. Уведення    даних  - із клавіатури дисплея,  ознака кінця введення - рядок символів END.
Program QUEUE;
uses Wincrt;
type
Alfa= String[10];
PComp= ^Comp;
Comp= record
sD:Alfa;
pNext:PComp
end;
var
pBegin, pEnd: PComp;
sC: Alfa;

Procedure CreateQueue(var pBegin,pEnd: PComp; var sC: Alfa);
begin
New(pBegin);
pBegin^.pNext:=NIL;
pBegin^.sD:=sC;
pEnd:=pBegin
end;
Procedure AddQueue(var pEnd:PComp; var sC:Alfa);
var pAux: PComp;
begin
New(pAux);
pAux^.pNext:=NIL;
pEnd^.pNext:=pAux;
pEnd:=pAux;
pEnd^.sD:=sC
end;

Procedure DelQueue(var pBegin: PComp; var sC: Alfa);
begin
sC:=pBegin^.sD;
pBegin:=pBegin^.pNext
end;
BEGIN
Clrscr;
writeln(' УВЕДИ РЯДОК ');
readln(sC);
CreateQueue(pBegin,pEnd,sC);
repeat
writeln(' УВЕДИ РЯДОК ');
readln(sC);
AddQueue(pEnd,sC)
until sC='END';
writeln(' ***** ВИСНОВОК РЕЗУЛЬТАТІВ *****');
repeat
DelQueue(pBegin,sC);
writeln(sC);
until pBegin=NIL
end.


Search:
????????...

концепція трьох світів

план- конспект до балади "Рукавичка "

твир серце матери

Чипка твир тема Борець за справедливость чи злочинець

як впорядкувати свій робочий день виховна

над чим примусив мене задуматись роман хіба ревуть воли,як ясла повні

твір на тему одіссея

легенда про походження миста

приклад діалогу з української мови

риси характеру людини перелык



?????????? ????????? ????
   
Created by Yura Pagor, 2007-2010