Forum: Object-Pascal / Delphi-Language
Delphi
by mael,
11. Aug 2005
Weiß ich, bringt aber nichts im Bezug zur Laufzeit wenn man Insert(i, Element) machen muß.
for-in ist nur das schönere Pendant zu folgender while-Schleife.
Element := ListBegin;
while Element^.next <> nil do
begin
// mach was
Element := Element^.next;
end;
Forum: Object-Pascal / Delphi-Language
Delphi
by mael,
11. Aug 2005
Mit echten Listen meine ich die (doppelt) verketteten Elemente. D.h. Einfügeoperation braucht
NewElement := New(Element);
Insert(AtElement, NewElement)
begin
AtElement.Next.Prev := NewElement;
AtElement.Next := NewElement;
end;
Das heißt, ich gebe keinen Index an, sondern das Element nachdem ich einfügen will. Daher habe ich O(1).
Wenn man mit Indexen arbeitet (wahlfreier...
Forum: Object-Pascal / Delphi-Language
Delphi
by mael,
11. Aug 2005
"Echte" Listen haben gegenüber dynamischen Arrays den Vorteil, daß Einfüge-Operationen in konstanter Zeit geschehen, d.h. man nur next bzw. prev Pointer anpassen muß.
Bei dynamischen Arrays muß hingegen ein durchgehender Speicherblock "gefunden" und dann alles kopiert werden, was je nach Listengröße auch gar nicht machbar ist. Das wird zwar durch intelligente Memory-Manager und Alloziierung von...