Добавил:
Kaz
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:АСОИ, Delphi, много вариантов 2 сем / 2стеки / сортировка,очистить / Unit2
.pas unit Unit2;
interface
uses Classes,ExtCtrls,Forms , Windows, Messages, SysUtils, Variants,
Graphics, Controls,
Dialogs, StdCtrls;
Type
Tinf=integer;
Tsel=^sel; //рекурсивный тип
sel=Record
Inf:TInf; // информация об элементе списка
A:Tsel; //Адрес ячейки такого же типа
end;
Tspisochek = class
constructor Create;
Procedure Sozd;
Procedure redakt;
Procedure Ochist;
end;
implementation
uses Unit1;
var
sp,spk,verh1,verh2,nach2,nach3,verh : Tsel;
Procedure Tspisochek.Sozd;
var
i,n : integer;
begin
spk:=nil;
randomize;
n:=5+random(10);
for i:=1 to n do
begin
sp:=spk;
new(spk);
spk^.inf:=-10 +Random(20);
form1.ListBox1.Items.Add(IntToStr(spk^.inf));
spk^.A:=sp;
end;
end;
Procedure Tspisochek.redakt;
var
n:integer;
begin
Form1.Button4.Enabled:=true;
Repeat
{While Spk^.A<>nil do}
begin
if spk^.Inf < 0 then
begin
Dispose(Spk);
spk:=sp
end
else
form1.ListBox4.Items.Add(IntToStr(spk^.inf));
spk:=sp;
end;
sp:=spk^.A;
until spk^.A = nil;
if spk^.Inf < 0 then
begin
Dispose(Spk);
spk:=sp
end
else
form1.ListBox4.Items.Add(IntToStr(spk^.inf));
spk:=sp;
end;
Procedure Tspisochek.Ochist;
begin
if verh<>nil then
begin
while verh^.A<>nil do
begin
spk:=verh;
verh:=verh^.A;
Dispose(Spk);
end;
Dispose(Verh);
end;
Form1.Button4.Enabled:=false;
Form1.Button2.Enabled:=false;
form1.listbox1.Clear;
form1.listbox4.Clear;
verh:=nil;
end;
Constructor Tspisochek.Create;
begin
{ne }
end;
end.
interface
uses Classes,ExtCtrls,Forms , Windows, Messages, SysUtils, Variants,
Graphics, Controls,
Dialogs, StdCtrls;
Type
Tinf=integer;
Tsel=^sel; //рекурсивный тип
sel=Record
Inf:TInf; // информация об элементе списка
A:Tsel; //Адрес ячейки такого же типа
end;
Tspisochek = class
constructor Create;
Procedure Sozd;
Procedure redakt;
Procedure Ochist;
end;
implementation
uses Unit1;
var
sp,spk,verh1,verh2,nach2,nach3,verh : Tsel;
Procedure Tspisochek.Sozd;
var
i,n : integer;
begin
spk:=nil;
randomize;
n:=5+random(10);
for i:=1 to n do
begin
sp:=spk;
new(spk);
spk^.inf:=-10 +Random(20);
form1.ListBox1.Items.Add(IntToStr(spk^.inf));
spk^.A:=sp;
end;
end;
Procedure Tspisochek.redakt;
var
n:integer;
begin
Form1.Button4.Enabled:=true;
Repeat
{While Spk^.A<>nil do}
begin
if spk^.Inf < 0 then
begin
Dispose(Spk);
spk:=sp
end
else
form1.ListBox4.Items.Add(IntToStr(spk^.inf));
spk:=sp;
end;
sp:=spk^.A;
until spk^.A = nil;
if spk^.Inf < 0 then
begin
Dispose(Spk);
spk:=sp
end
else
form1.ListBox4.Items.Add(IntToStr(spk^.inf));
spk:=sp;
end;
Procedure Tspisochek.Ochist;
begin
if verh<>nil then
begin
while verh^.A<>nil do
begin
spk:=verh;
verh:=verh^.A;
Dispose(Spk);
end;
Dispose(Verh);
end;
Form1.Button4.Enabled:=false;
Form1.Button2.Enabled:=false;
form1.listbox1.Clear;
form1.listbox4.Clear;
verh:=nil;
end;
Constructor Tspisochek.Create;
begin
{ne }
end;
end.