Das Hauptproblem ist hier: eine verkettete Liste ist nicht indiziert, die Items der ListBox aber schon. Du wirst also einen "internen Zähler" implementieren müssen. Dabei hat das Wurzelelement der Liste den Zählwert 0, dessen Nachfolger dann die 1 usw.
Pseudocode:
Delphi-Quellcode:
Zaehler := 0;
z := Wurzel;
while z <> nil do
begin
if ListBox.Items.Selected(Zaehler) then
AusListeLöschen;
z := z^.naechster;
inc(Zaehler);
end;
Das ist jetzt ungetestet, sollte im Groben aber stimmen.