Loko
Salut,
ich soll mich mit dem Thema "doppelt verkettet Listen" auseinander setzen. Ich find im Netz aber keine entsprechenden Texte, die mir das Thema verstädlich machen.
Habt Ihr das was an der Hand.
Was sind Listen bzw doppelt verkettet Listen?
Wozu braucht mand das?
Wie funktionieren Sie?
Ich würde mich freuen, wenn mir da einer behilflich sein könnte.
Gruß
Loko
Hanfling
[megapost]
Erm das man nichts entsprechendes findet bezweifel ich _sehr_ stark, zumal ich mir selbst was dazu im Internet gesucht habe um das zu lernen.
Das Prinzip ist, das man dynamische Objekte erstellt, die mit Pointern verbunden sind. Bei ner einfach verketten Liste nur auf das nächste Element, bei ner doppelt verketten Liste zusätzlich zum vorherigen.
Ich versuch mal ausm Kopf bischen Beispielcode zu schreiben:
Zuerst brauchst du einen Datentyp für den Listeneintrag zB.:
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
|
//
struct ll_item {
int blub; // platzhalter das du was speichern kannst
// WICHTIG:
ll_item *pPrev; // zeiger auf das vorherige Element der liste
ll_item *pNext; // auf das nächste
};
|
|
Dann schreibst du dir am Besten ne Klasse um mit den Elementen umzugehen. zB.
| code: |
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
|
class ll_manager {
public:
ll_manager(void) {
// beim starten direkt das erste Element erstellen
pFirst = new ll_item;
pFirst->pPrev = NULL; // zeiger können nicht auf andere
pFirst->pNext = NULL; // Elemente zeigen da keine da sind
pLast = pFirst; // logisch oder?
};
void AddItem {
pLast = pTemp;
pLast = new ll_item; // neues element rein
pLast->pPrev = pTemp; // auf vorheriges element verweisen
pLast->pNext = NULL; // ist das letzte, also kann danach keiner kommen
pTemp->pNext = pLast; // vorletzes Element muss auf letzes verweisen
};
private:
// temporärer Zeiger, Zeiger auf letztes Element der List und erstes.
ll_item *pTemp;
ll_item *pLast;
ll_item *pFirst;
};
|
|
So das sind die Grundprinzipien und müsste richtig sein (hoffe ich auch).
Falls du Irgendwelche Schleifen brauchst um durch die Elemente zu gehen:
| code: |
1:
2:
3:
4:
5:
6:
7:
|
pTemp = pFirst;
while ( pNext != NULL ) {
cout << pTemp->blub; // ausgabe oder was immer du machen willst mit dem Element
pTemp = pTemp->pNext; // pTemp auf nächstes Element setzen
}
|
|
So Code zum einfügen an beliebigen Stellen, Entfernen von Einträgen etc. dürftest du mit nen bischen Überlegen selbst hinkriegen.
Btw. denk dran im Dekonstruktor alle Elemente zu löschen (mit ner Schleife!).
Verwendungszweck:
zB. ein Partikelsystem, die C++ string Klasse, etc.
edit: falls was unklar ist Frag
[/megapost]
Loko
Aaaargh, ich fühle so ein Gribbeln in meiner Hand

.
Schönes Thema, was mir da mein Lehrer aufgebrummt hat, zumal ich nur eine Woche Zeit bekommen habe.
Das dumme an der Sache ist, ich kann kaum OPP und dann kommt der mir mit Listen.
Naja ich danke Dir für die Hilfe, ich versuche mich da mal reinzudenken.
Wie hast Du dich in das Thema eingearbeitet?
Gruß
Loko
Hanfling
| Zitat: |
| Original von LokoWie hast Du dich in das Thema eingearbeitet? |
Ich war zu faul nen Tutorial durchzuarbeiten, weil mich die Länge erschreckt hat und habe es nur so überflogen und mitgenommen das mit den Zeigern auf das nächste Element. Nunja und dann selber probiert wie man das macht.
Btw. nen gutes Turorial fürs ein Arbeiten ist:
http://www.resourcecode.de/view.php?id=756
Gruß zurück
Loko
danke für die Hilfe
Gruß
Loko
Hanfling
Mitlerweile finde ich den begrenzten Einsatz von dem list Template für sehr sinnvoll bei nicht performance relavanten Bereichen.
chrigu99
spannend, mr. posting-geier
Hanfling
flame = new FlameWar();
flame->setTarget("chigru");
flame->say("was willst du eigentlich?");
chrigu99
lass den scheiss...
ich meinte damit den sinnlosen kommentar von oben
Hanfling
Hab auch keine Lust auf nen Flamewar, war nur abgefuckt von der Info Stunde in der Schule.
*handgeb* ^^
Hanfling
Rache? Ich kenne da so meine Methoden. :p
z.B. hatte mal das hier geschrieben, und würde es meiner Ex zum totalen verletzen schicken:
| Zitat: |
Das Leben des Bastard Exfriend From Hell (BexFH) - Episode I
Der Tag began eigentlich ganz angenehm. Einen Joint am rauchen und dabei ein Buch mit fiesem Inhalt lesen. Eine Sache störte jedoch die beschauliche Ruhe. Eine Drohung der aktuellen Exfreudin (bzw. man wurde überrumpelt es zuzulassen), dass sie sich an diesem Tage gegen frühen Nachmittag melden würde - telefonisch. Wie immer hasste ich Telefonieren, weil Anrufe meist nichts gutes bedeuten. Noch gut gelaunt setzte ich mich 2 Etagen tiefer zu meinem geliebten PC (wo man Leute einfacher ignorieren kann) und zu meinem weniger geliebten Telefon. Ich habe mir schon extra kein Handy gekauft, damit ich nicht den ganzen Tag belästigt werde mit unnötigen Gesülze. Dieses Gesülze was einem in der Seele weh tut, besonders nachdem was sie einem angetan haben (Ja, auch BexFH's haben Gefühle, oder zumindest als Ausrede). Nach dem mühevollem Aufstehen und guter Laune, die besser niemand riskieren sollte zu verschlechtern, habe ich mich entschlossen, doch einmal die aufgestauten Anrufe (Ja mein verdammtes Telefon hat eine "Anrufe in Abwesendheitsanzeige") abzuarbeiten: Ein Familienmitglied hat angerufen. Pflichtbewusst drücke ich die nötigen Knöpfe um den Anruf einzuleiten.
"Hallo, ich bin es." melde ich mich.
- "Das ist aber schön das du anrufst...." klingt es verheißungsvoll.
Die nächten 5 Minute beschäftige ich mich mit wichtigeren Dingen und sage nur ab und zu "ja", "nein", "aha" und vorallem "mh" nach Zufallsmuster (Ich sollte dies auf Tonband aufnehmen, dies würde mir eine Menge Arbeit sparen, oder noch besser: Die Telefonanlage mit dem PC anzapfen und ein Programm dafür schreiben). Nach wenigen Minuten fällt mir auf das meine werte Frau Oma Kritik an mir übt. Kritik kann ich vor und nach Mitternacht nicht ausstehen. Vorallem im Bereich unter 8h nach dem Aufstehen. Leicht genervt öffne ich meine Notizdatei und füge eine neue Notiz hinzu: "Erbvorkehrungen treffen". Es folgen weitere Minuten, deren Inhalt unerheblich ist.
Nach diesem Telefonat bin ich gereizt, ein tödlicher Fehler bei mir, besonders für die Personen, welche im späteren Verlaufe des Tages mit mir Kontakt haben werden (es sei den, sie sind: gutaussehen, sexwillig und _keine_ Ex von mir).
Andererseits sage ich mir, befinde ich mich in dem perfekten Zustand um Kontakt mit meiner momentanen Ex zu haben. Fairerweise halte ich mich mit Ausrasten zurück und rede grade soviel das der Eindrück entstehen müsste, ich interessiere mich für das was sie sagt.
BUSTED
Ich scheine einen Fehler gemacht zu haben, bzw. ihr PARANOIDES Gehirn, was sich einbildet ich würde ihr was böses wollen, jedenfalls wirft sie mir vor, ich würde nicht mit ihr reden wollen!
Ich finde dies so eine Unverschämtheit, nach all dieser Mühe, die ich mir gemacht habe, ihr Gejammer und Gesülze zu ertragen.
|
edit: Ist nicht in vollem Maße erkennbar ohne Insider-Kenntnisse. :c
chrigu99
hohohoho der text ist hammer...