Hilfe meine Daten spinnen

  • Bin Neuling, vielleicht kann mit jemand folgendes erklären:
    Das ist mein Struct:

    struct zustand_note
    {
    std::vector<int> werte; // die Zahlen in einen Vektor verpackt
    zustand_note *next; // Verknüpfung zum Nachfolger
    };
    zustand_note *anker = 0; // Anfang der Liste

    ein Vektor zum Speichern von intWerten und ein Zeiger auf das nächste Element von Struct.
    2 Funktionen:
    void zustand_note_ausgeben(zustand_note zx)
    {
    std::cout << zx.werte[1] << " " << zx.werte[2] << " " << zx.werte[3] << std::endl;
    std::cout << zx.werte[4] << " " << zx.werte[5] << " " << zx.werte[6] << std::endl;
    std::cout << zx.werte[7] << " " << zx.werte[8] << " " << zx.werte[9] << std::endl << std::endl;
    }

    Zum ausgeben der Werte des Stuct, und

    void zustand_note_init(zustand_note zy, int int1, int int2, int int3, int int4, int int5, int int6, int int7, int int8, int int9)
    {
    zy.werte[1] = int1;
    zy.werte[2] = int2;
    zy.werte[3] = int3;
    zy.werte[4] = int4;
    zy.werte[5] = int5;
    zy.werte[6] = int6;
    zy.werte[7] = int7;
    zy.werte[8] = int8;
    zy.werte[9] = int9;
    }

    zum initialisieren der werte. Jetzt mein Problem:
    int main(int argc, char *argv[])
    {
    zustand_note startzustand;
    zustand_note endzustand;

    std::cout << "Programm 8-Puzzle-Breitensuche wird gestartet!\n";

    zustand_note_init(startzustand, 2, 8, 3, 1, 6, 4, 7, 0, 5);
    zustand_note_ausgeben(startzustand); //erste Ausgabe

    zustand_note *node = new zustand_note;
    node->werte = startzustand.werte;
    node->next = anker;
    zustand_note_ausgeben(node->werte);// zweite Ausgabe
    zustand_note_init(endzustand, 1, 2, 3, 8, 0, 4, 7, 6, 5);
    zustand_note_ausgeben(endzustand);// dritte Ausgabe
    zustand_note_ausgeben(startzustand);// vierteAusgabe
    zustand_note_ausgeben(node->werte);// fünfte Ausgabe

    system("PAUSE");
    return EXIT_SUCCESS;
    };

    Ich initialisiere den Startzustand und kopiere seine Werte in den neuen Zeiger auf ein Structelement. danach initialisiere ich den endzustand.
    Jetzt kommt die Ausgabe:
    Programm 8-Puzzle-Breitensuche wird gestartet!
    2 8 3 //Ausgabe 1 alls richtig startzustand initialsiert und
    1 6 4 // werte richtig
    7 0 5

    2 8 3 //Ausgabe 2 alls richtig *node initialsiert und werte richtig kopiert
    1 6 4
    7 0 5

    1 2 3 //Ausgabe 3 alls richtig endzustand initialsiert und
    8 0 4 // werte richtig
    7 6 5

    1 2 3 // erneute Ausgabe von startzustand gibt mir die werte des endzustand???
    8 0 4 // wie kann das sein, hab doch nichts geändert
    7 6 5

    1 2 3 // erneute Ausgabe von *node gibt mir auch die werte des endzustand???
    8 0 4
    7 6 5

    Drücken Sie eine beliebige Taste . . .

    Kann mir das bitte iner erklären oder lösen?

  • Erstmal was ganz wichtiges: bitte nutze die Code-tags, dass kann sonst keiner lesen!

    Ich hab dein Problem nur kurz überflogen, deswegen nur mal eine Vermutung: du übergibst in deine Funktionen nur Kopien der Nodes, und arbeitest daher auf lokalen Kopien und nicht auf den originalen.
    Mach Referenzen draus...