TYPE TRekord = RECORD
imie: string;
wiek: integer;
end;
TYPE StosPtr = ^Stos;
Stos = record
gorny : StosPtr;
dolny : StosPtr;
zawartosc: TRekord;
end;
var
wierzch : StosPtr;
wybor : char;
liczba : integer;
koniec : StosPtr;
procedure usun(k:integer);
begin
koniec := wierzch;
if k > policz then exit;
while k > 1 do
begin
dec(k);
koniec := koniec^.dolny
end;
if((koniec^.dolny = NIL) and (koniec^.gorny = NIL)) then wierzch := NIL
else if(koniec^.dolny = NIL) then
koniec := NIL
else if koniec^.gorny = NIL then
wierzch := koniec^.dolny
else
begin
koniec^.zawartosc.imie := koniec^.dolny^.zawartosc.imie;
koniec^.zawartosc.wiek := koniec^.dolny^.zawartosc.wiek;
koniec^.dolny := koniec^.dolny^.dolny;
koniec^.dolny^.gorny := koniec;
//koniec^.gorny^.dolny := koniec^.dolny;
//koniec^.dolny^.gorny := koniec^.gorny
end;
end;
Jest to część programu. Próbowałem już na kilka sposobów, ale ciągle jest ten sam problem. Np. mam 5 elementów i jak dam, by usunęło drugi element, to owszem, usuwa go, lecz niszczą się też poprzednie rekordy. Może mi ktoś wytłumaczyć, gdzie popełniam błąd?