4 Stimmen

Benötigen Sie Hilfe bei der Serialisierung

Ich versuche, ein Programm zu schreiben, um eine verkettete Liste ohne Verwendung von Bibliotheken in eine Datei zu serialisieren. Mein Problem ist, wie ich Knoten zur serialisierten Struktur hinzufügen oder entfernen kann, da ich keinen next-Zeiger habe? Wie kann ich auch Fragmentierung vermeiden?

5voto

Stephen Punkte 45678

Wenn Ihre verkettete Liste keine Schleifen hat, dann ist die Tatsache, dass dies eine "verkettete Liste" ist, ein Speicherdetail, kein Serialisierungsdetail. Schreiben Sie einfach die Knotenwerte in die Datei und bauen Sie die next-Zeiger beim Deserialisieren.

Wenn Ihre verkettete Liste jedoch Schleifen hat, dann benötigen Sie etwas Intelligenteres. Sie müssen die next-Zeiger als Dateioffsets zum Knoten (oder etwas Ähnliches) speichern, um die "Verbindung" zu kodieren.

Für jeden Knoten in Ihrer verketteten Liste speichern Sie zwei Wörter. Das erste ist die Daten, das zweite ist der Offset des next-Knotens. Hier ist eine Illustration der zirkulär verketteten Liste:

 +-> 1234 -> 5678 -> 2398 -+
 |                         |
 +-------------------------+

0  : 4Bytes: 1234 : int Daten  <------------+
4  : 4Bytes:    8 : Offset des nächsten Knotens -+ |
                                         | |
8  : 4Bytes: 5678 : int Daten  <----------+ |
12 : 4Bytes:   16 : Offset des nächsten Knotens -+ |
                                         | |
16 : 4Bytes: 2398 : int Daten  <----------+ |
20 : 4Bytes:    0 : Offset des nächsten Knotens ---+

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X