Помощь - Поиск - Пользователи - Календарь
Полная версия: Стеки
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Делфи
-Наська-
Блин эти фиговы штуки... Теорию поняла... хочу вывести в Мемо. как ето сделать? blink.gif
Scorp_Freeman
Memo1.Clear;

bufS:=stek;
while bufS<>nil do
begin
Memo1.Lines.Add(bufS.FIO);
bufS:=bufS.Prev;
end;

где stek-вершина стека, bufS.Prev-указатель на предыд. узел, bufS.FIO - поле которое хочешь вывести
-Наська-
Смотрите такой прикол - у меня генериться рандомно стек из 10 элементов. у мя есть кнопка добавить и так как ето стек, то "последний пришел, первый вышел". Мну не знаю. это к одной кнопке две функции привязать. че написать что б первый убирал. или просто как со списком сделать. или эту функцию оставить?

procedure TStack.Push(a: string);
var P:PNode;
begin
new(P);
P.Next := head;
head := P;
P.Info := a;
Stsize := Stsize + 1;
end;

procedure TStack.Pop (var a: string);
var P: PNode;
begin
if not Empty then
begin
P := FNode;
FNode := P.Next;
a := P.Info;
dispose(P);
end;
end;

{кнопка вставить}
procedure TForm1.Button1Click(Sender: TObject);
var
ch: string;
i: integer;
begin
{Stack := TStack.Create;}
i := 1;
ch := Memo2.Lines [0];
Stack.Push(ch);
{stack.Pop(head); }
inc(i);
end;

{кнопка список}
procedure TForm1.Button2Click(Sender: TObject);
var
P: Pnode;
begin
Memo1.Clear;
New(P);
P := head;
while P <> nil do
begin
Memo1.Lines.Add(P.Info);
P := P.Next;
end;
dispose(p);
end;

procedure TForm1.FormCreate(Sender: TObject);
var
P: PNode;
begin
stolbik:='';
p := head;
Randomize;
for n:= 1 to 10 do
begin
new (p);
p.Info:= IntToStr(Random(15));
stolbik := '';
p.Next := head;
head := p;
stolbik := stolbik + p.Info + #13;
p := p.Next;
end;
end;


Гость
Ладно...с этим со всем вроде разобралась. а вот смысл очереди для меня остается загадочным...
первый пришел, первый ушел. эт как?
допустим у мя массив(ну очередь) 1 2 3 4 5
я ввожу 9. и че получается 9 2 3 4 5?
andriano
Стек - труба открытая с одной стороны. Иначе называется магазин. С одной стороны вставляем патроны и с того же конца их в обратном порядке достаем.
А очередь - труба открытая с двух сторон: с одной стороны в нее запихиваем, а с другой - достаем. Естественно, в том же порядке, что и запихнули.

Кстати, у меня сложилось впечатление, что ты не совсем верно представляешь механизм функционирования стека: "пришел" и "ушел" - две разные операции, а не одна.
т.е.

Стек:
12345
запихиваем 9 -> 912345
достаем(9) -> 12345

Очередь:
12345
запихиваем -> 912345
достаем (5) - 91234
volvo
Цитата
смысл очереди для меня остается загадочным...

Было: <1, 2, 3, 4, 5>
Добавляешь 9: <1, 2, 3, 4, 5, 9>
Читаешь один элемент - читается 1... То есть, добавляется информация в конец, а читается с начала...
-Наська-
Спасиб. На конец-то все по полочкам разложилось blum.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.