![]() |
verkettete Listen
Suche ein einfaches vollständiges Beispielprogramm (Delphi Seattle) für verkettete Listen.
Kann mir da jemand helfen ? |
AW: verkettete Listen
Versuch es selbst und schau dir den Wikipedia Artikel oder so dazu an.
Verkettete Listen sind echt nicht schwer ;) Wenn du nicht weiterkommst, sag Bescheid woran es hängt und wir helfen dann. |
AW: verkettete Listen
|
AW: verkettete Listen
--- Bitte ignorieren (oder löschen) ---
|
AW: verkettete Listen
Zitat:
|
AW: verkettete Listen
Zitat:
|
AW: verkettete Listen
Ohhh mein Fehler! Ich hatte das Zip nicht geladen weil ich dacht das da Sourcecode drinnen ist.
Ich nehm alles zurück, alles ist da wie es sein sollte, tut mir leid für spamm! |
AW: verkettete Listen
...oder man schaut sich einfach an, wie es andere machen. Es gibt tausende Beispiele.
zB die DeHL.Collections.LinkedList.pas von der DeHL: ![]() Oder die ReferenceData-Typen der Lina Components Library: ![]() Sinn machen verkettete Listen aber nur in den wenigsten Fällen. Es ist meistens nur zum Üben sinnvoll. Siehe ![]() |
AW: verkettete Listen
Gut zu lesen, was sinnvoll ist.
Bisher neigte ich eher zu dieser Auffassung: Zitat:
K-H |
AW: verkettete Listen
Zitat:
1. Vergleicht er das ganze mit seiner Implementierung einer Zeigerkette. Ich weißt nicht was er da gebaut hat, aber der Overhead bei einer Zeigerkette dürfte um einiges weniger sein, als bei TList. a) TList ist eine Klasse. D.h. ich hab die ganze Verwaltung eines Objektes dahinter. b) TList basiert auf einem Array. Wie p80286 schon anführte, gibts da einige Nachteile. 2. Komplexere Datenstrukturen (z.B. Baumstrukturen) kommst du mit einer TList nicht weiter. Das beste Beispiel für Verkette Listen, das mir bekannt ist, dürfte der VirtualTree (VirtualStringTree) sein. TList hat seine Stärke, wenn ich eine einfache (sprich 1.Dimensional) List von Daten brauche. Sobalds komplexer wird, ist eine richtig angewandte verkette Liste weit effizienter. |
AW: verkettete Listen
<offtopic>Vielleicht wäre es klüger, das Anliegen des TE zu berücksichtigen, als den Thread zu kapern + persönliche Vorlieben kundzutun.</offtopic>
![]() ![]() |
AW: verkettete Listen
[QUOTE=TigerLilly;1399765]<offtopic>Vielleicht wäre es klüger, das Anliegen des TE zu berücksichtigen, als den Thread zu kapern + persönliche Vorlieben kundzutun.</offtopic>
:gruebel::wiejetzt: |
AW: verkettete Listen
Hab's ja selbst versucht mit folgendem Beispiel aus (Hanser Verlag) Borland Delphi 7 Beispiel von Seite 728:
type PKnoten = ^TKnoten; TKNoten = record; Nr : Integer; Inhalt : String; Next: PKnoten; end; private public end; ... Nach Start kommt folgende Fehlermeldung: Feld M.Inhalt besitzt keine entsprechende Komponente ! Soll die Deklaration entfernt werden ? Wo liegt der Haken ? |
AW: verkettete Listen
Hmm..
Zitat:
Hier ist ein ';' zu viel |
AW: verkettete Listen
Zitat:
Delphi-Quellcode:
?
M.Inhalt
Zeig doch mal den vollständigen Code. Gruß K-H |
AW: verkettete Listen
Also ich arbeite recht oft mit verketteten Listen, wobei ich das eher verkettete Zeiger nennen würde. Das kommt in der Tat duch VirtualTreeView. Dort kann man, wenn man die Funktionsweise erst einmal kapiert hat, Baumstrukturen mit einer Million Knoten in Sekundenbruchteilen aufbauen. Mach das mal mit einem TTreeView 8-)
Aber auch die nachgelagerten Daten verkette ich ganz gerne über Zeiger auf Records. So kann ich die selben Daten in mehreren Bäumen bzw. Grids verwenden. Mein Projekt ![]() |
AW: verkettete Listen
[OT]
Zitat:
[/OT] Gruß K-H |
AW: verkettete Listen
Zitat:
|
AW: verkettete Listen
|
AW: verkettete Listen
Zitat:
|
AW: verkettete Listen
Zitat:
Gruß K-H |
AW: verkettete Listen
Zitat:
Bei sehr kleinen Listen (so in der Größenordnung <100 Elemente) ist allerdings das Array oft trotzdem schneller. Es kommt natürlich auch immer darauf an, ob man mehr liest oder mehr schreibt. Wenn man fast nur liest, dann kann das Array auch bei größeren Listen Sinn machen. |
AW: verkettete Listen
Zitat:
Willst du mittendrin ein Element löschen, dann lässt du dieses Element alle Verweise auf sich selbst in anderen Elementen auf das jeweils nächste Nachbarelement ändern. Das geht, wenn jedes Element seine Nachbarn "persönlich" kennt. Du könntest wenn du viel Wert auf Integrität legst, einen Zeiger auf jeden Record in eine TList schreiben, um sie dann in einem Destructor abzuarbeiten und freizugeben. Aktiv arbeiten würde ich aber mit der TList nicht. |
AW: verkettete Listen
Ah so, vielen Dank!
das halte ich mal im Hinterkopf Gruß K-H |
AW: verkettete Listen
Zitat:
Delphi-Quellcode:
over-allocated z.B. anhand bestimmter Growth-Faktoren. Bei einer linked-list wäre das nur möglich, wenn man alle Nodes im selben Speicher hält, wofür man dann aber wiederrum z.B. ein extra Bitmap benötigt, um die freien Bereiche zu Tracken (habe ich deshalb noch in kaum bzw. sogar in keiner Implementation gesehen). Kann also schon sein, dass das Verschieben des Speichers performanter ist. Denke das muss man alles individuell auf den Anwendungsfall bezogen testen.
std::vector
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:44 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz