🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: de.comp.lang.c++
4 messages
4 total messages Started by SCHNIBBLE Thu, 08 Feb 1996 05:42
Doppelt gekettete Liste ...
#1571
Author: SCHNIBBLE
Date: Thu, 08 Feb 1996 05:42
20 lines
1240 bytes
Hallo zusammen,

ich habe mich am 08.02.96 um 08:40 an die Muehle gehockt,
um folgendes loszuwerden...

Gibt es in C++ eine Möglichkeit doppelt gekettete Listen in einer Datei zu  
speichern ?? Ein Listenelement besteht jeweils aus einigen Variablen,  
sowie einem Zeiger auf den Vorgaenger und den Nachfolger .....


--
                     ,    ,
                    ("\''/").___..--''"`-._
                    `9_ 9  )   `-.  (     ).`-.__.`)
                    (_Y_.)'  ._   )  `._ `. ``-..-'
                   _..`--'_..-_/  /--'_.' .
                  (il).-''  ((i).'  ((!.-'
  -------------------------------------------------------------------
                    <<<<< schnibble@alcatraz.org >>>>
  -------------------------------------------------------------------
Re: Doppelt gekettete Liste ...
#1573
Author: Tom Wellige
Date: Fri, 09 Feb 1996 08:29
31 lines
2014 bytes
SCHNIBBLE wrote on 08.02.96 about
"Doppelt gekettete Liste ...":

S> Gibt es in C++ eine Moeglichkeit doppelt gekettete Listen in einer Datei zu
S> speichern ?? Ein Listenelement besteht jeweils aus einigen Variablen,
S> sowie einem Zeiger auf den Vorgaenger und den Nachfolger .....

Meines Erachtens ist es unsinnig, *alle* Daten Deines Listenelementes zu 
speichern. Es wnuetzt Dir nichts, die Zeiger zu speichern, da nach dem 
erneuten Einlesen der Datei die Listenelemente an einer anderen Stelle im 
Speicher liegen.

Schreib doch einfach nur die Variablen hintereinander in eine Datei, und 
stell beim Einlesen dieser, die Verknuepfungen wieder her.

Etwas aufwenidger wird dieses Verfahren, wenn Du nicht nur eine 
durchgaengige Liste hast, sondern evtl. einen kompletten Baum (mit einigen 
Querstraengen), aber auch dieses Problem laesst sich auf besagt Weise 
loesen.


  See you, Tom.
--
 +--------------------------+---------------------------------------------+
 | Tom Wellige              | BBS DISTEL (Dieburg, Germany)               |
 | Haller Weg 64            |    PICARD@distel.robin.de                   |
 | 33617 Bielefeld, GERMANY | Dublin Institute of Technology (Ireland)    |
 | +49 521 152474           |    TWELLIGE@dit.ie                          |
 | ** PGP key on request ** |    http://147.252.133.152/people/twellige/  |
 +--------------------------+---------------------------------------------+
## CrossPoint v3.1 R ##
Re: Doppelt gekettete Liste ...
#1557
Author: Ralf W. Stephan
Date: Fri, 09 Feb 1996 12:37
17 lines
1052 bytes
SCHNIBBLE@ALCATRAZ.org writes:
> Gibt es in C++ eine Möglichkeit doppelt gekettete Listen in einer Datei zu  
> speichern ?? Ein Listenelement besteht jeweils aus einigen Variablen,  
> sowie einem Zeiger auf den Vorgaenger und den Nachfolger .....

In C++ ist fast alles möglich, nur muß der Weg vorgegeben werden.
Wie wäre es, die Elemente speicherbar zu machen (mit einem friend
ostream& operator<<(ostream&, Element&), wobei die Pointer ignoriert
werden), und ebenso ein friend ostream& operator<<(ostream&, Dliste&)
wo die Liste der Reihe nach durchgegangen wird?

Die Vorgehensweise beim Laden bleibt dem Leser überlassen...


ralf
--
PGP: 1024/0xA713ECE9 2047/0xC8E605F5
Re: Doppelt gekettete Liste ...
#1650
Author: Walter Doerwald
Date: Fri, 09 Feb 1996 22:19
35 lines
1309 bytes
SCHNIBBLE schrieb in <62SwRlmilzB@olli.alcatraz.org> folgendes:

> Hallo zusammen,
> 
> ich habe mich am 08.02.96 um 08:40 an die Muehle gehockt,
> um folgendes loszuwerden...
> 
> Gibt es in C++ eine Möglichkeit doppelt gekettete Listen in einer Datei zu
> speichern ?? Ein Listenelement besteht jeweils aus einigen Variablen,
> sowie einem Zeiger auf den Vorgaenger und den Nachfolger .....

Mach's doch ganz einfach so:

template<class T> void List<T>::Write(ostream& s) const
{
	s << AnzahlDerElemente << endl;
	for (Listendurchlauf mit Nd)
		s << *Nd << endl;
}

template<class T> void List<T>::Read(istream& s)
{
	ListeLeerMachen();

	long Anzahl;

	for (s >> Anzahl;Anzahl;Anzahl--)
		HintenAnhängen(new T(s));
}

Dazu müssen die Objekte in der Liste natürlich über ein stream-Konstruktor
(T::T(istream&)) verfügen.

Bis demnächst...
	Walter Dörwald
Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads