M
Und nochmal Hallo.
Ich komme so langsam auf den richtigen Dampfer.
Bin jetzt dabei eine doppelt verkettete Liste zu erstellen.
Die Auswertung der Speicheradressen funktioniert schon recht gut, allerdings gibt es Probleme mit dem Verlassen der Schleifen.
Wenn ich das Programm debuggen will, stürzt es ab. Wenn ich es hingegen ausführe werden die Speicheradressen korrekt angezeigt, nur halt in einer Schleife, die ca. 10x so oft durchläuft als sie eigentlich sollte.
An was kann das liegen? Und wenn mir jemand sagen (bzw. überprüfen) kann, ob meine push-Fktn so in dieser Form richtig ist, wäre ich sehr dankbar.
Irgendwas mache ich noch falsch, bzw. fehlt mir noch an Wissen. Wie gesagt, ich bin über jeden Ratschlag froh.
Hier mein Code:
void DoLL::start() { // Vorheriges Nullsetzen des Einstiegspunkts
top = tail = NULL;
}
void DoLL::push(int v) {
// DoLLNode* dummy1;
// DoLLNode* dummy2;
if (top == NULL) { // Prüfe, ob das erste Element erstellt wird
top = node;
tail = node;
node = new DoLLNode(v, NULL, this->node); // PREV auf NULL
} else { // Prüfe, ob das letzte Element erstellt wird
if (!node->next) {
node->prev = tail;
node->next = NULL;
tail = node;
node = new DoLLNode(v, node->prev, NULL); // NEXT auf NULL
} else { // "Normales" befüllen der Liste
node->prev = tail;
tail->next = node;
tail = node;
node = new DoLLNode(v, node->prev, node->next);
}
}
}
void DoLL::print() {
cout << node->item << " | akt. Adresse: " << this->node << " | next->" << node->next << " | prev->" << node->prev << "\n";
if (node != NULL) {
node = node->next;
print();
}
}
Und der Aufruf in der main-Fktn
DoLL* object = new DoLL();
object->start(); //top und tail = NULL
for (int i = 0; i < 10; i++) {
object->push(i);
}
cout << "Aktuelle INT-Werte auf dem Speicher: " << endl;
object->print();
Besten Dank vorab!
Martin