Stack паскал

Stack Паскал

Хората, бързи като предмет Паскал juzat на! Какво е стека, знам, но ето как да се работи с него? Въведете създадете група, добавете данни, изтриване на данни. Ето този тип въпрос аз съм интересуват. Ако можете ma-и-червено primerchik.

> чума
Прочетете за монтаж инструкции, бута и поп

2 скиор. Фактът на въпроса, че трябва да се направи на чиста Паскал. Без Асма. Тази работа RGZ, преподавател в университета в ИАНМСП не посегнат.

TStack - Peek, поп, Push
структура данни последователно достъп
Стек - "за първи път през - изкара"
място - "за първи път през - първа изходяща" (FIFO - за първи път през - първа изходяща)
Декември - вход, от една страна, и на изхода от двете

> чума
Ами тогава по-лесно
1) Използване TList или негов потомък (тя ще бъде по-красив.)
2) или купчина си представим използване масив.

2 скиор. Как е? С помощта на масив?

> чума
Standard.
И, което ви плаши.
Прочетете за него в Alfred Ахо и Dzheffi Ulmana
"алгоритми и структури от данни" (ако не се лъжа.)

Е, това е около.

конст
ASize = 64;
тип
TStack = опаковани рекорд
Data. масив [1..ASize] на цяло число;
Най-високо. Цяло число;
приключи; // TStack
Var
Stack. TStack;

// Clear Stack
процедура EmptyStack (Var AStack TStack.);
започвам
AStack.Top: = ASize;
приключи;

// напишете стойността в стека
процедура Push (Var AStack TStack ;. конст AValue число.);
започвам
ако AStack.Top = 1 тогава ShowMessage ( "Stack е пълен!")
друг да започне
AStack.Data [AStack.Top]: = AValue;
AStack.Top: = AStack.Top - 1;
приключи;
приключи;

// отстраняване на стойността от стека-а
// AValue резултат в AValue
процедура поп (Var AStack TStack ;. Var AValue число.);
започвам
ако AStack.Top = ASize тогава ShowMessage ( "Stack е празен!")
друг да започне
AValue: = AStack.Data [AStack.Top];
AStack.Top: = AStack.Top + 1;
приключи;
приключи;

процедура Push (Var AStack TStack ;. конст AValue число.);
започвам
ако AStack.Top = 0 тогава ShowMessage ( "Stack е пълен!")
друг да започне
AStack.Data [AStack.Top]: = AValue;
AStack.Top: = AStack.Top - 1;
приключи;
приключи;

процедура поп (Var AStack TStack ;. Var AValue число.);
започвам
ако AStack.Top> ASize тогава ShowMessage ( "Stack е празен!")
друг да започне
AValue: = AStack.Data [AStack.Top];
AStack.Top: = AStack.Top + 1;
приключи;
приключи;

2 Скиор Уау! Благодаря. Точно сега аз ще копаем!

чума (18.12.02 18:18)
Вие нямате време, а другият е, когато може да ви и се огъват пръстите си?

2 Анатолий Podgoretsky, интересно, а това се случи, когато работата е "изгори" с теб? Или не?

Понякога, но тя винаги е мой проблем.