Nun, ich weiß nicht wie ich Dir das anders erklären soll:
Ein Beispiel von mir wie ein Element aus einer doppelt verketteten Liste gelöscht wird.
Vielleicht hilft es Dir ja weiter.
Delphi-Quellcode:
procedure TFeed.deleteItem(aPointer:Pointer);
begin
ItemList:=aPointer;
if (aPointer <> firstItem) and (aPointer <> lastItem) then
begin
ItemList^.next^.prev:=ItemList^.prev;
ItemList^.prev^.next:=ItemList^.next;
end;
if aPointer = firstItem then
begin
firstItem:=ItemList^.next;
if firstItem <> nil then
ItemList^.next^.prev:=nil;
end;
if aPointer = lastItem then
begin
lastItem := ItemList^.prev;
if lastItem <> nil then
ItemList^.prev^.next:=nil;
end;
dispose(ItemList);
end;
wobei ItemList so ausschaut:
itemList: PfeedSet;
und PfeedSet so:
Delphi-Quellcode:
PfeedSet = ^TfeedSet;
TfeedSet = record
data : TData;
prev,next: PfeedSet;
end;
end;
[edit] noch ein Link zur
Verdeutlichung.[/edit]
Grüße und eine gute Nacht
Klaus