Witam,
Chciałbym usunąć n-ty element z listy jednokierunkowej,
Definicja typu:
hak = ^pudlo;
pudlo = record
klucz : real;
tytul : String[50];
rok : Integer;
opis : String[255];
ocena : Integer;
nastepny :hak;
end;
kod procedury
procedure TForm1.Button1Click(Sender: TObject, n: integer);
var
i : integer;
akt,poprzedni : hak;
begin
akt := pierwszy;
if n = 1 then
begin
pierwszy := pierwszy^.nastepny;
dispose(akt);
end
else
begin
for i:=1 to n do
begin
poprzedni :=akt;
akt := akt.nastepny;
end;
if akt^.nastepny <> nil then
poprzedni^.nastepny:= akt^.nastepny
else
poprzedni^.nastepny:= nil;
dispose(akt);
end;
end;
Pierwszy element usuwa dobrze, przy próbie usunięcia innego niż jeden mam błąd: Access vollation in ... lub przypisuje on na koncu listy 3 razy wartość z pozycji n.
Jak sobie z tym poradzić?
Proszę o wskazówki