Скачиваний:
12
Добавлен:
15.06.2014
Размер:
1.69 Кб
Скачать
unit Unit2;

interface

uses StdCtrls, SysUtils;

type
Psel=^sel;
sel=Record
b:integer;
a:Psel;
end;

Tspis=class(Tobject)
c:Psel;
n:integer;
constructor create;
procedure ismenit(n1:integer);
procedure print(list:TListBox);
function find:integer;
procedure add(n1:integer);
procedure delete(n1:integer);
end;

implementation

constructor Tspis.create;
begin
inherited create;
c:=nil;
n:=0;
end;

procedure Tspis.print(list:TListBox);
var i:integer;c1:Psel;
begin
list.Clear;
c1:=c;
for i:=1 to n do
begin
list.Items.Add(inttostr(c1.b));
c1:=c1.a;
end;
end;

procedure Tspis.ismenit(n1:integer);
var i:integer;
c1:Psel;
begin
n:=n1;
if not(c=nil)then
while c.a<>Nil do
begin
c1:=c.a;
dispose(c);
c:=c1;
end;
c:=nil;
for i:=1 to n do
begin
new(c1);
c1.b:=random(10000);
c1.a:=c;
c:=c1;
end;
end;

function Tspis.find:integer;
var min,max,n1,m,i:integer;
c1:Psel;
begin
if n=0 then begin result:=0;exit;end;
c1:=c;
max:=-1;min:=10000;
for i:=1 to n do
begin
if c1.b>max then
begin
max:=c1.b;m:=i;
end;
if c1.b<min then
begin
min:=c1.b;n1:=i;
end;
c1:=c1.a;
end;
result:=abs(m-n1)-1;
if result=-1 then result:=0;
end;

procedure Tspis.add(n1:integer);
var i:integer;c1,c2:Psel;
begin
c1:=c;n:=n+1;
if n1>1 then begin
for i:=1 to n1-2 do
c1:=c1.a;
new(c2);
c2.b:=random(10000);
c2.a:=c1.a;
c1.a:=c2;
end
else
begin
new(c1);
c1.b:=random(10000);
c1.a:=c;
c:=c1;
end;
end;

procedure Tspis.delete(n1:integer);
var i:integer;c1,c2:Psel;
begin
c1:=c;n:=n-1;
if n1>1 then begin
for i:=1 to n1-2 do
c1:=c1.a;
c2:=c1.a;
c1.a:=c2.a;
Dispose(c2);
end
else c:=c.a;
end;

end.
Соседние файлы в папке стек