Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];

Вниз

Стек на Паскале   Найти похожие ветки 

 
plague   (2002-12-18 17:59) [0]

Народ, подскажите плиз как сабж на Паскале юзать! Что такое стек я знаю, но вот как с ним работать? Типа создать стек, добавить данные, удалить данные. Вот такого типа вопросы меня интересуют. Если можно ма-а-аленький примерчик.


 
Skier   (2002-12-18 18:01) [1]

>plague
Почитай про ассемблерные команды push и pop


 
plague   (2002-12-18 18:07) [2]

2 skier. В том то и дело что надо сделать на чистом Паскале. Без асмы. Это задание на РГЗ, а препод в универе в asme не рубит.


 
han_malign   (2002-12-18 18:09) [3]

TStack - Peek,Pop,Push
структуры данных последовательного доступа
стек - "первым вошел - последним вышел"
очередь - "первым вошел - первым вышел"(FIFO - first in - first out)
дек - вход с одной стороны, а выход с обоих


 
Skier   (2002-12-18 18:10) [4]

>plague
Ну тогда проще
1) Используй TList или его потомок (это будет красивее...)
2) или представь стэк с помощью массива.


 
plague   (2002-12-18 18:13) [5]

2 skier ??? Это как? При помощи массива?


 
Skier   (2002-12-18 18:16) [6]

>plague
Стандартно...
А что тебя пугает.
Почитай об этом у Альфреда Ахо и Джеффи Ульмана
"Алгоритмы и структуры данных" (если я не ошибаюсь...)


 
plague   (2002-12-18 18:18) [7]

2 Skier, блин да некогда мне книжки читать. Мне до завтра надо сделать. Пример можешь дать?


 
Skier   (2002-12-18 18:38) [8]

>plague

Ну вот примерно...

const
ASize = 64;
type
TStack = packed record
Data : array[1..ASize] of Integer;
Top : Integer;
end; //TStack
var
Stack : TStack;

//Очистить Stack
procedure EmptyStack(var AStack : TStack);
begin
AStack.Top := ASize;
end;

//записать значение в Stack
procedure Push(var AStack : TStack; const AValue : Integer);
begin
if AStack.Top = 1 then ShowMessage("Стэк заполнен !")
else begin
AStack.Data[AStack.Top] := AValue;
AStack.Top := AStack.Top - 1;
end;
end;

//снять значение со Stack-а
//AValue результат в AValue
procedure Pop(var AStack : TStack; var AValue : Integer);
begin
if AStack.Top = ASize then ShowMessage("Стэк пуст !")
else begin
AValue := AStack.Data[AStack.Top];
AStack.Top := AStack.Top + 1;
end;
end;


 
Skier   (2002-12-18 18:42) [9]

Ошибка закралась...

procedure Push(var AStack : TStack; const AValue : Integer);
begin
if AStack.Top = 0 then ShowMessage("Стэк заполнен !")
else begin
AStack.Data[AStack.Top] := AValue;
AStack.Top := AStack.Top - 1;
end;
end;

procedure Pop(var AStack : TStack; var AValue : Integer);
begin
if AStack.Top > ASize then ShowMessage("Стэк пуст !")
else begin
AValue := AStack.Data[AStack.Top];
AStack.Top := AStack.Top + 1;
end;
end;


 
plague   (2002-12-18 18:42) [10]

2 Skier Ух ты! Спасибо. Щас буду разгребать!


 
Anatoly Podgoretsky   (2002-12-18 18:43) [11]

plague (18.12.02 18:18)
Тебе некогда, а другим есть когда, может тебе и пальцы загибать?


 
plague   (2002-12-18 18:45) [12]

2 Anatoly Podgoretsky, интересно, а у тебя такое бывало, когда работа "горела"? Или нет?


 
Anatoly Podgoretsky   (2002-12-18 19:08) [13]

Бывало, но это всегда моя проблема.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2002.12.30;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.013 c
3-99020
Tsarik
2002-12-07 20:49
2002.12.30
Login Screen, Delphi+Access


14-99357
D.V.K
2002-12-11 13:09
2002.12.30
Как установить под Delphi7 компоненты от других Delphi


3-99029
Jdrm
2002-12-11 11:18
2002.12.30
Глюки с RecordCount


3-98978
AM
2002-12-10 10:05
2002.12.30
БД Paradox


4-99417
Обсолютный ноль
2002-11-06 14:48
2002.12.30
Вопросик...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский