Kolejka pascal (Stos)
Program pyta ile liczb chcesz podać, następnie prosi i wpisanie n liczb. Zadaniem programu jest zwrócenie liczb w porządku rosnącym.
Kolejka w Pascalu
program kolejka;
uses crt;
type wsk=^element;
element=record
dane:integer;
nast:wsk;
end;
var max, liczba, i:integer;
w:wsk;
procedure do_kolejki(var d:integer; var w:wsk);
var temp,poprz,nast:wsk;
begin
new(temp);
if w=nil then {przypadek gdy wstawiamy do kolejki pierwszy element}
begin
temp^.dane:=d;
temp^.nast:=nil;
w:=temp;
end
else
begin {w przypadku gdy juz sa elementy w kolejce}
temp^.dane:=d;
poprz:=w;
nast:=poprz^.nast;
if temp^.dane<=poprz^.dane
then {przypadek ze dokladamy element na poczatku kolejki}
begin
temp^.nast:=w;
w:=temp;
end
else
begin
while (nast<>nil) and (temp^.dane>nast^.dane) do
begin {przypadek dokladania elementow w srodku kolejki}
poprz:=poprz^.nast; {przesuniecie wskaznika poprz na nastepne m-ce}
nast:=poprz^.nast; {przesuniecie wskaznika nast na nastepne m-ce}
end;
if nast<>nil then
begin
poprz^.nast:=temp; {wstawienie elementu w odpowiednie miejsce}
temp^.nast:=nast;
end
else
begin
poprz^.nast:=temp;
temp^.nast:=nil;
end;
end;
end;
end;
procedure ZeStosu(var element:integer;var wierzcholek:wsk);
var temp:wsk;
begin
if wierzcholek<>nil then
begin
element:=wierzcholek^.dane;
temp:=wierzcholek^.nast;
dispose(wierzcholek);
wierzcholek:=temp;
end;
end;
begin
Write('Podaj ile liczb max=');readln(max);
for i:=1 to max do
begin
write('Podaj liczbe ');readln(liczba);
if i=1 then w:=nil;
Do_Kolejki(liczba,w);
end;
repeat
ZeStosu(liczba,w);
Writeln(liczba);
until w=nil;
repeat until keypressed;
end.
stos pascal, kolejka pascal, pascal wskaźnik, pascal,
February 12th, 2010 in
Pascal
