Ош1

Материал из Вики проекта PascalABC.NET
Версия от 16:49, 30 января 2011; Mikst (обсуждение | вклад) (Новая: <source lang="Delphi">type StackException=class(Exception) end; Node = class private Data: integer; Next: Node; constructor Create(aData: integer; aNext: Node); ...)
(разн.) ← Предыдущая версия | Текущая версия (разн.) | Следующая версия → (разн.)
Перейти к навигацииПерейти к поиску
type
 StackException=class(Exception)
 end;
 
  Node = class
  private 
    Data: integer;
    Next: Node;
    constructor Create(aData: integer; aNext: Node);
    begin
    
      Data := aData;
      Next := aNext;
    end;
  end;
  IntStack = class
  private 
    top: Node;
  public 
    procedure Push(d: integer);virtual; 
    begin
     
      top := new Node(d, top);
    end;
    function Pop: integer; virtual;
    begin
      result := top.Data;
      top := top.Next;
    end;
    function Peek: integer; virtual;
    begin
    if top=nil then raise new StackException('Peek:обращение к пустому стеку');
      result := top.Data;
    end;
    procedure Clear; virtual;
    begin
      top := nil;
    end;
    function ToString: string; override;
    var
      t: Node;
    begin
      result := '';
      t := top;
      while t <> nil do
      begin
        result := result + IntToStr(t.Data) + '-';
        t := t.Next;
      end;
      result := result + 'nil';
    end;
  end;

var
  s: IntStack;
  i: integer;




begin
  s := new IntStack;
  writeln(s);
  for i := 1 to 5 do
  begin
    s.Push(random(100));
    writeln(s);
  end;
  writeln(s.Pop);
  writeln(s);
//  try
  s.Clear;
//  i:=StrToInt('abc');
  s.Peek;
//  except
//  on e:stackexception do
  write('ошибка: ');
//end;
end.