Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [Pascal] Реализация стека


Автор: Br1gad1r 22.11.2006, 21:41
Связанный список - стек, где добавления и удаления осуществляются в голове.
P.S. Помогите пожалуста написать программу.!

Автор: volvo877 23.11.2006, 02:15
Br1gad1r, например, так:

Код
type
  T = integer; { <--- Для простоты замены типа данных }

  stack = ^node;
  node = record
    value: T;
    next: stack;
  end;

function empty_stack(s: stack): boolean;
begin
  empty_stack := (s = nil);
end;

procedure push(var s: stack; X: T);
var p: stack;
begin
  new(p);
  p^.value := X;
  p^.next := s;

  s := p;
end;

procedure pop(var s: stack; var X: T);
var p: stack;
begin
  if s = nil then exit
  else begin
    p := s;

    X := s^.value;
    s := s^.next;

    dispose(p);
  end
end;

var
  top: stack;
  i: integer;
begin
  top := nil;

  for i := 1 to 10 do
    push(top, 4 * i);

  while not empty_stack(top) do begin

    pop(top, i);
    write(i:3);

  end;
  writeln;
end.
Если пользоваться встроенными типами Паскаля, то можно pop сделать функцией, я сделал ее процедурой для более объей реализации, например, стек структур (функция в Турбо Паскале не сможет вернуть структуру, только через Var параметр процедуры)...

Автор: Br1gad1r 23.11.2006, 16:42
Спасибо большое)

Автор: Alexeis 24.11.2006, 11:12
Модератор: не забывайте указывать, что вопрос решен. ("Пометить как решенный")

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)