Niedziałające usuwanie w liście jednokierunkowej samoorganizującej się

Niedziałające usuwanie w liście jednokierunkowej samoorganizującej się
OW
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 3
0

Witam,

gdy chcę usunąć np. 5. element w liście jednokierunkowej, to w ListBox'ie zostaje mi puste pole w miejscu, gdzie znajdował się dany element, a do pliku zapisuje się puste pole. Wiem, że można zrobić warunki, żeby nie przepuszczało pustego pola, ale np. gdy usunę ten piąty element i później kliknę w ListBox'ie na którykolwiek element, który znajdował się pod tym usuniętym, to wyświetla mi w polu, do którego idzie element o jeden niższy (czyli program bierze pod uwagę też ten usunięty element). Może ktoś wie, jak mogę poprawnie usunąć tylko ten jeden element, ale tak, żeby program już później nie brał go pod uwagę? Kod odpowiedzialny za usuwanie zamieszczam poniżej:

Kopiuj
i:=0;
while ((tmp<>NIL) AND (i<>4)) do begin
    tmp:=tmp^.next;
    i:=i+1;
end;
del:=tmp;
tmp:=tmp^.next;
dispose(del);
_13th_Dragon
  • Rejestracja: dni
  • Ostatnio: dni
1

Poprawne usuwanie:

Kopiuj
tmp:=poprzedni^.next;
poprzedni^.next:=tmp^.next;
dispose(tmp);

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.