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

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1 = class(TForm)
Button1: TButton;
Button2: TButton;
Memo1: TMemo;
Memo2: TMemo;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

Type Tinf =record
inf:word;
no:word;
end;
Tps=^Ts;
Ts=record
inf:Tinf;
ps:Tps;
end;
var p:Tps;min,max,y:word;
const n=10;

implementation

{$R *.dfm}

Procedure AddStack(var P:Tps;n,no:word);
var pt:Tps;
begin
new(pt);
pt^.inf.inf:=n;
pt^.inf.no:=no;
pt^.ps:=p;
p:=pt;
end;


Procedure FromStack(var p:Tps;var n,m:word);
var pt:Tps;
begin
if p<>nil then begin
pt:=p;
m:=p^.inf.inf;
if p^.inf.inf=min then p^.inf.inf:=max
else if p^.inf.inf=max then p^.inf.inf:=min;
n:=p^.inf.inf;
p:=p^.ps;
dispose(pt);
end else n:=0;
end;


procedure exchange(var p:Tps;var n:word);
var nt,x,max1:word;
begin
if p^.ps<>nil then begin
if p^.inf.inf>P^.ps^.inf.inf then begin
max1:=p^.inf.inf;
if max1>max then max:=max1;
nt:=p^.inf.inf;
p^.inf.inf:=p^.ps^.inf.inf;
p^.ps^.inf.inf:=nt;
x:=p^.inf.no;
p^.inf.no:=p^.ps^.inf.no;
p^.ps^.inf.no:=x;
inc(n);
end;
exchange(p^.ps,n);
end;
end;


procedure SortStack(var p:Tps);
var n:word;
begin
repeat
n:=0;
exchange(p,n)
until n=0;
end;

procedure TForm1.Button1Click(Sender: TObject);
var i,j:integer;
begin
randomize;
memo1.Clear;
p:=nil;
y:=n;
for i:=1 to n do begin
j:=random(20);
addstack(p,j,i);
memo1.Lines.Add(inttostr(j));
end; end;

procedure TForm1.Button2Click(Sender: TObject);
var k,m:word;
begin
max:=0;
memo2.Clear;
SortStack(p);
min:=p^.inf.inf;
while p<>nil do begin
FromStack(p,k,m);
Memo2.Lines.Add(inttostr(m)+' '+inttostr(k));
end;
Memo2.Lines.Add('max='+inttostr(max)+'min='+inttostr(min));
end;

end.
Соседние файлы в папке макс. и мин
  • #
    15.06.20145.57 Кб12Unit1.dcu
  • #
    15.06.2014970 б12Unit1.dfm
  • #
    15.06.20142.15 Кб12Unit1.pas