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,

Leave a comment

Your comment

Anti-Spam Protection by WP-SpamFree