Ucze sie dopiero pascala i mam problem ze zrozumieniem stosu. Zanczy wiem jak dziala stos, bo uzywalem go w c++ ale tam bylo calkiem inczej.
Ponizej kod
program abc;
type stos = ^element;
element = record
wartosc:integer;
nastepny:stos;
end;
procedure push(var s:stos; liczba:integer);
var
tmp:stos; // nowy wskaznik na element
begin
New(tmp);
tmp^.wartosc:=liczba;
tmp^.nastepny:=s;
s:=tmp; // zamien ostatni wskaznik
end;
function empty(s:stos):boolean; // zwraca true gdy pusty stos
begin
if s=nil then empty:=true
else empty:=false;
end;
procedure pop(var s:stos);
var
tmp:stos;
begin
if not empty(s) then
begin
writeln(' Sciagamy ze stosu ',s^.wartosc);
tmp:=s;
s:=tmp^.nastepny;
dispose(tmp);
end
else
writeln('Nie mozna sciagnac bo stos jest pusty');
end;
var
s:stos;
begin
s:=nil; // na poczatku nie pokazuje na nic, inicjalizacja stosu
end.
Kod ten dziala ale nie rozumie 2 linijek z procedury Push
- tmp.nastepny:=s; Dlaczego tak a nie tmp.nastepny:=nil; ? Przeciez jest to ostatni element
oraz
- s:=tmp; // tego w ogole nie rozumie
Z gory dzieki za odpowiedz