# verkettete Listen



## Piesbruhder (7. April 2002)

Tja, ich bins mal wieder mit einer Frage zu C++ Grundlagen. Es
geht um verkettete Listen *händeÜberDemKopfZusammenschlag*.
Dank Homer habe ich jetzt schon richtig kapiert was so eine Liste
ist und wie sie vom Prinzip her funktioniert. Aber wie
deklariert (oder wie auch immer das bei Listen heißt) man die?
In meinem Buch ist natürlich ein Beispiel, aber irgendwie macht mir
das mächtige Probleme! Das liegt zum Teil daran, dass ich das
was man immer ändern kann (quasi der Name der List) und die Befehle
die immer gleich sind nicht auseinander halten kann. Also gebt, wenn ihr
was schreibt der Liste einen Namen, der ekelhaft heraus sticht.
Das wäre sehr nett. Sowas wie Brot oder so.
<hoffentlich hat das jemand verstanden was ich meine>
Hier der Beispielcode aus meinem Buch (!AchtungLang!)



> // Datei: XXXLIst.h
> //DEFINITIONEN///////////////////////////////////////
> typedef struct xxxListItem {
> void *data;
> ...



Sooo! Man verzeihe mir die vielen Tippfehler. Aber wenn das eine(r)
ausführlich erklären könnte, wäre das was für die Ewigkeit.
Wenn nicht versteh ich das. Ihr habt ja auch noch anderes zu tun.

Freu mich über jede Antwort!

Bye!


----------



## Robert Martinu (7. April 2002)

Schau Dir mal den Thread an, da gehts um ein ähnliches Thema.


----------



## Daniel Toplak (7. April 2002)

@ Piesbruhder 

So also, zurück zu den verketteten Listen, ich hab mir das Programm oben nicht angeschaut, und will es auch nicht, da es etwas unverständlich ist. Aber ich füge ein eigenes Programm bei, bzw nur die .cpp und .h Dateien. Compilieren kannst du selbst *g*
Ich hab jetzt gerade fast eine Stunde gebraucht um das Programm zu kommentieren, da es keinerlei Kommentare enthielt. Also betrachte es mit Würde *g*.
Aber ich denke du wirst es danach verstanden haben.
Da du dich mit verketteten Listen befasst, denke ich mal, daß du mit den Grundlagen von C++ vertraut bist und mit Klassen und Strukturen umgehen kannst. *g* Deshalb bin ich auch beim Kommentieren nicht näher auf die Sprache C++ eingegangen sonder hab nur die Funktionalität beschrieben.
So na dann viel Spaß damit.


----------



## Piesbruhder (7. April 2002)

Danke :| !
Vielen Dank!

Damit hast du mir echt geholfen! Das is ja eigentlich gar
nicht so schwer wenn man sich mal fünf Minuten vor dein
Programm setzt und ein bissel die Birne anstrengt.  

Da frag ich mich aber doch noch eins: In meinen Beispielprogramm
tauchen manchmal ** auf (zwei?). Das hat mich am meisten verwirrt. Aber im
großen und ganzen machen die Programme ja das selbe. In deinem
steht aber nicht so eine Fehlerpberprüfung wie in meinem. Aber die
ist ja optional, denk ich mal.

Und was ich auch mal fragen wollte: macht es einen unterschied ob
ich jetzt printf wie früher oder cout benutze?

Aber echt! Danke! 

Bye!


----------



## Xeragon (7. April 2002)

printf() ist eine CRT-Funktion (d.h C).
std::cout ist ein iostream -> C++

std::cout ist außerdem universeller und einfacher.

Pointer-auf-Pointer kommen manchmal vor, allerdings hab ich selten jemanden gesehn der sie in verketteten Listen verwendet?

Um die Kritik weiterzuführen: Das Beispiel das du gegeben hast ist in C, und das ist ziemlich blöd handzuhaben, halt dich besser an das Beispiel von homer oder die STL.

Ahja... kann es sein, dass das ein Zerbst-Beispiel ist? (AFAIK verwendet niemand sonst derart sinnlose Variablen-Präfixe oder noch immer C für Listen usw. )


----------



## Piesbruhder (7. April 2002)

Du hasts erfasst! Er sagt ja selber, dass er einen
eigensinnigen Stil hat. Deshalb vergleich ich auch
gerne mit anderen Beispielen(was ich ja hier gemacht hab)

---

Also kann man sagen cout ist besser, oder?


----------



## Xeragon (7. April 2002)

Hmm, wenn du C++ programmierst solltest du cout verwenden (bzw. allgemein möglichst C++-Funktionalitä C-Funktionen vorziehen),
in C printf().

Bei den meisten Implementierungen ist printf() marginal schneller, was aber im Normalfall nicht auffällt, und hat dafür keine Typ-Sicherheit od. Erweiterbarkeit.


----------



## dfd1 (30. Juni 2003)

Hallo Leute
Sorry, wen ich ein altes Thema neu aufwühle. Ich hab das selbe Problem wie Piesbruhder es gehabt hat... nur bräuchte ich es diesmal in C, nicht C++
Wäre froh, wenn sich noch mal jemand die Mühe machen würde, dasselbe in C zu erklären.

PS:  hab ich verwendet, darum bin ich auch auf dieses Thema gekommen...

Es grüsst:
dfd1 -> the only one


----------



## Thomas Kuse (30. Juni 2003)

Im Beispiel oben kann ich auf Anhieb keinen C++ typischen Code erkennen, da ja auch nur Strukturen und keine Klassen verwendet werden. Eventuell funktioniert das mit den Prototypen so nicht, schreibe die richtigen Funktionen dann an die Stelle wo die Prototypen aufgelistet sind!

Ansonsten wurde neulich gerade erst über verkettete Listen gepostet (http://www.tutorials.de/tutorials111781.html)


----------



## dfd1 (30. Juni 2003)

Das was Piesbruhder gepostet hat, ist schon C... Kannst du es mir erklären??

Mit C++ mein ich das von Homer, welches sehr gut komentiert ist. Aber leider in C++ geschrieben.


----------



## Thomas Kuse (30. Juni 2003)

Sorry aber dafür hab ich keine Zeit.
Das Thema wurde im Internet und auch bei uns zur Genüge durchgekaut!
Hab Dir doch extra einen Link gegeben!

OT:
Wenn dir der Unterschied von C++ und C nicht geläufig ist - der sicherlich nicht grossartig in der Verwendung von verketteten Listen liegt - dann sind verkettete Listen vielleicht noch nicht das richtige für Dich.


----------



## Daniel Toplak (30. Juni 2003)

@dfd1
Ich weiß das mein Beispiel C++ ist (hab ich gerade mal wieder angeschaut, is ja schon alt) aber du kannst die Methode die in der Klasse gekapselt sind als ganz normale Globale Funktionen hernehmen schon hast du Proceduralen C-Code und das cout << bla << endl; wandelst du in printf("bla\n"); um.
Dann wäre der Code nahe zu auf C zurückportiert.
Außerdem muss ich .:jOki:. bepflichten im Internet gibt es zig Beiträge über einfach und doppelt verketette Listen.

Gruss Homer


----------



## Orukh (21. April 2005)

jo hi leute.

ich bin auch, schulisch bedingt, mit diesen verketteten liste bestraft. Und ich wollte mal fragen für was man die überhaupt verwenden kann. den ich hba überhaupt keine ahnung wofür ich die brauche   

wäre net wenn mir des einer erklären könnte


----------



## Daniel Toplak (21. April 2005)

Boah der Thread is ja schon bald 2 Jahre alt.
Also mit verketteten Listen kann man Datenstrukturen Speichern. So ähnlich wie in einem Array, nur das es bei verketteten Listen keinen wahlfreien Zugriff gibt.
Dagegen kann man vorwärts und rückwärts schneller durchiterieren, als mit Arrays.

Daniel


----------



## Orukh (21. April 2005)

jo, danke jetzt kann ich mir endlich was drunter vorstellen.   

Hab mich aber jetzt erst damit beschäftigt, vor 2 jahren hatte ich noch keine C++  ;-)


----------

