![]() |
Verkettete Liste als Baum in Txtdatei abspeichern
Hallo,
wie kann ich eine doppelt verkettete Liste als Baum in eine Textdatei schreiben ? Danke für Eure Antwort. Gruss BIOSER |
Re: Verkettete Liste als Baum in Txtdatei abspeichern
Listen als Baum abspeichern ist naturgemäß nicht so einfach (weil eine Liste kein Baum ist).
Speichere die Liste doch einfach sequentiell ab und lies sie dann wieder ein... |
Re: Verkettete Liste als Baum in Txtdatei abspeichern
Hallo alzaimar,
was soll ich machen, wenn ich mehrere verkettete Listen habe ? Trennzeichen verwenden ? Danke für Deine Antwort. Viele Grüße BIOSER :wink: |
Re: Verkettete Liste als Baum in Txtdatei abspeichern
Hallo Bioser,
doppelt verkettete Liste sagt ja nur was über den Zugriff auf die Daten aus, aber nichts über die Daten selbst. Die Folgebeziehung aus der Verkettung kann leicht auf einen externen Speicher abgebildet werden, aber man muss die Struktur der zu speichernden Daten kennen um dir einen vernünftigen Vorschlag machen zu können. Grüße vom marabu |
Re: Verkettete Liste als Baum in Txtdatei abspeichern
hi, es handelt sich dabei um Datensätze aus verschiedenen Tabellen.
Meiner Meinung nach wäre es am besten, wenn man sie als Baum abspeichert, oder ? |
Re: Verkettete Liste als Baum in Txtdatei abspeichern
Hmm.... Lass mich mal ausholen..
Erstmal: Abspeichern und Einlesen sollte schnell gehen. Also ohne vorher die Einfügeposition suchen zu müssen. Daraus folgt: Jede Liste sollte so abgespeichert werden, wie sie eben vorliegt. Damit kann man sie 1:1 genauso wieder einlesen. Daraus folgt aber auch: Jede Liste wird nacheinander abgespeichert. Ich würde es so machen: Jede Liste speichert die Elemente hintereinander und dann zum Schluss ein 'Listenende' Damit kann man das Abspeichern (in Pseudocode) so implementieren:
Code:
Und das Einlesen so;
Foreach L in ListsToSave Do
e := L.First; While e<>nil do begin WriteToFile (e.Contents); e := e.NextElement; End; WriteToFile (<EndOfList>); End;
Code:
Das ist optimal schnell aber es geht einfacher:
While not EndOfFile Do begin
L := NewList; Repeat E := ReadElement; If E = EndOfList Then Break Else L.Add (E); // Ans Ende der Liste anhängen Until Weihnachten=Ostern; // Hö Hö End; Wozu verkettete Listen, wenn es die gute alte TStringList gibt. Auch wenn sie nicht optimal schnell ist, sollte das im Jahre 2005 egal sein, zumal sie bis 20000 Elemente durchaus schnell genug ist (solange man
Delphi-Quellcode:
setzt. Dann ist das Suchen ordendlich.
MyList.Sorted := True
Noch ein Tipp: Du hast einen Kunden. Warum, meinst du, bieten die meisten Software-Buden auch 'IT-Consulting' an, also Beratung? Weil die Forderung deines Kunden (wenn er den kein Prof ist ;-) ) eine verkettete Liste zu verwenden, auf durchaus kostenpflichtigen Beratungsbedarf (des Kunden) schliessen lässt. Will sagen: Manchmal muss man den Kunden zu seinem Glück *zwingen* Tipp: Stringlisten. Und dann so programmieren, das man die Stringlisten -wenns geht- einfach durch noch geeignetere Strukturen ersetzen kann. |
Re: Verkettete Liste als Baum in Txtdatei abspeichern
Hallo Bioser,
wie groß sind deine Listen? Wieviele Felder enthält jeder Tabelleneintrag? Wieviele Tabellen hältst du in deinen Listen vor? Werden alle Tabellen immer vollständig in den Hauptspeicher geladen? marabu |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:47 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