Witam
Mgr. prowadzacy cwiczenia zadal nam do domu napisac program w pascalu:
Implementacja funkcji i procedur zarządzających stosem:
a) push – odkładanie danych na stos. Jeśli stos jest niezainicjalizowany, polecenie to powinno ją
wykonać.
b) pop – zdejmowanie danych ze stosu. Konieczne jest sprawdzenie, czy kolejnym
zdejmowanym elementem nie jest nil, którego wystąpienie powinno być odpowiednio
obsłużone.
c) wyczysc – zwolnienie całej pamięci zajmowanej przez stos.
d) odwroc – odwrócenie kolejności elementów w stosie
e) wyswietl – wyświetlenie na ekranie całej zawartości stosu
Z punktem a, b, c nie mialem zadnych problemow ale w ogole nie wiem jak sie zabrac do punktu d i e. Bylbym bardzo wdzieczny za napisanie tych dwoch procedur/funkcji albo chociaz ogolnego zarysu z czego skorzystac. (aha najlepiej jakby program nie korzystal z tablic/rekordow tylko i wylacznie ze stosow.
Tu jest to co do tej pory stworzylem. moze znajdziecie jakies bledy w podanym kodzie to prosilbym rownoczesnie o ich wygraniecie i ew. poprawienie w ramach mozliwosci.
program project1;
type
wskaznik=^element;
element = record
dana:integer;
wsk:wskaznik;
end;
var
p:wskaznik;
nu,ne:integer;
MemAvail:byte;
procedure push(var x:wskaznik; y:integer);
var
top:wskaznik;
begin
new(top);
top^.dana:=y;
top^.wsk:=x;
x:=top;
end;
procedure pop(var x:wskaznik; var y:integer);
var
bottom:wskaznik;
begin
y:=x^.dana;
bottom:=x^.wsk;
x:=bottom;
end;
procedure wyczysc();
begin
dispose(p);
writeln('pamiec stosu zostala zwolniona');
end;
begin
writeln('Ile elementow odlozyc na stos ?');
readln(ne);
while ne>0 do
begin
writeln('Podaj wartosc elementu:');
readln(nu);
push(p,nu);
dec(ne);
end;
writeln('Na stos odlozono nastepujace elementy: ');
while p<>nil do begin
pop(p,nu);
writeln(nu);
end;
wyczysc();
readln;
end.
z groy dziekuje.