Ош1
Материал из Вики проекта PascalABC.NET
Перейти к навигацииПерейти к поиску
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.
uses
ThorLists, System.Collections.Generic;
function max(xs: List<integer>): integer;
begin
var m := xs.Item[0];
var _list_1 := xs;
for var _counter_ := 0 to _list_1.Count - 1 do
begin
var x := _list_1.Item[_counter_];
if x > m then begin
m := x;
end;
_list_1.Item[_counter_] := x;
end;
result := m; exit;
end;
begin
var x := CreateList(1, 2, 6, -234, 43, 33, 4, 6, 10);
var b := GenerateRange(-20, -15);
var c := Slice(1, 4, x);
writeln(max(x));
writeln(b.Item[3]);
writeln(max(c));
var _list_0 := c;
for var _counter_ := 0 to _list_0.Count - 1 do
begin
var t := _list_0.Item[_counter_];
writeln(t);
_list_0.Item[_counter_] := t;
end;
end.