Konstruktoren in C++

Egal wie ich es mache in meiner Konstruktion geht der Zeiger dann immer verloren bzw. die Elemente!
Ich bekomme es nicht hin :( ufff... !!!

Ich poste mal meinen Code nochmal vielleicht könnt ihr den mal überfliegen und mir erklären wo es hackt :(
Konstruktor:
C++:
Warteschlange::Warteschlange(unsigned int value) {
    if (value == 0)
        value = 4;
    for (unsigned int i = 0; i < value; i++) {
        extends();
    }
    pTop = pBottom->next;
}
extends:
C++:
void Warteschlange::extends() {
    Node *node = new Node {-1};
    if (node == nullptr) {
        cerr << "Fehler kein Speicherplatz" << endl;
        return;
    }
    if (pTop == nullptr) {
        pTop = pBottom = node;
        size++;
    } else {
        pTop->next = node;
        pTop = node;
        pTop->next = pBottom;
        size++;
    }
}
push:
C++:
void Warteschlange::push(int value) {
    if(pTop->next != pBottom) {
        pTop->value = value;
        pTop = pTop->next;
    }
    else {
        pTop->value = value;
        extends();
    }
pop:
C++:
int Warteschlange::pop() {
    if(pBottom != pTop) {
        pBottom = pBottom->next;
        return pBottom->value;
    }
    else {
        cerr << "Fehler pop() Warteschlange leer!" << endl;
        return -1;
    }
}
Ich könnte ja einfach zwei Zeiger noch nehmen Anfang und Ende! Dann sollte es einfacherer werden :) Und auch für mich möglich. Leider weiß ich aber nicht ob wir das dürfen.
 
Zuletzt bearbeitet:
Sauber wenn ich die Liste mit einem Element initialisiere fällt das Programm bei so ziemlich allen Methoden auf eine nullptr Exception oder etwas anderes :D
Auch mit dem Anfang und Ende Zeiger bekomme ich es nicht hin!
Dabei belasse ich es jetzt erst einmal werd das ganze neu überdenken müssen und von vorne Anfangen.
 
Passende Stellenanzeigen aus deiner Region:

Neue Themen

Oben