Zitat von
SirThornberry:
Ist es beabsichtigt das du mit der Variablen "Temp" im Speicher von FUserNode rumänderst? Und warum nimmst du nicht einfach TList oder leitest davon ab, dann musst du das mit dem "Next" etc. nicht mehr machen, man muss das
rad ja nicht jedes mal neu erfinden.
Weil TList einen array verwendet.
Nachtrag: Sorry Chewie, unter all den bunten Avataren bist du untergangen.
@PseudoDings
Ich führe immer einen Tail und einen Head in meiner Liste. Dadurch muss ich nicht immer das Ende suchen, bevor ich etwas einfügen will.
Ein Knoten könnte so aussehen:
Delphi-Quellcode:
type TSomeListNode = class
private
fList : TSomeList;
fNext : TSomeListNode;
fPrevious : TSomeListNode;
public
Data : SomeDataType;
constructor Create(); overload;
constructor Create(aData : SomeDataType); overload;
destructor Destroy(); override;
end;
Und das Add der Liste so:
Delphi-Quellcode:
procedure TSomeList.Add(aP: TSomeListNode);
begin
if fEnumerating then
raise EMutatingEnumerationException.Create('You can not add nodes to an enumerating list.');
aP.fList := Self;
if fHead = nil then
begin
fHead := aP;
fTail := aP;
end
else
begin
aP.fPrevious := fTail;
fTail.fNext := aP;
fTail := aP;
end;
inc(fCount);
end;