Pop und Push mit Arrays



  • Hallo,
    ich habe ein Problem mit einem Stack, der mit einem Push-Befehl zusätzliche Elemente bekommen soll. Ich poste erstmal ein wenig Code:

    typedef struct Wert{
        int nr;
        double wert;
    } Wert;
    
    typedef Wert Eintrag;
    
    typedef struct Stack {
        Eintrag* feld;
        int top;
        int max;
    } Stack;
    
    void push(Stack* thisData, const Eintrag* const neu){
        thisData->top++;
        thisData->feld = (Eintrag*)neu;
    }
    
    int main()
    {
        Stack* myStack = newStack(10);
    
        Eintrag werte1, werte2;
        werte1.nr = 1;
        werte1.wert = 22.0;
        push(myStack, &werte1);
    
        werte2.nr = 2;
        werte2.wert = 3.14
        push(myStack, &werte2);
    
        printStack(myStack);
    
        return 0;
    }
    

    Das Erstellen des Stacks (newStack(int max)) funktioniert und beim Auslesen der Adressen funktionieren auch Übergaben aus der Main an die push-Methode. Auch das pop() und das printStack() funktionieren. In der Push-Methode wird nun die erste Adresse von thisData->feld angesprochen und auch korrekt mit den daten von neu gefüllt. Dies gilt allerdings nur für einen Datensatz. Es gelingt mir leider nicht, den Pointer auf den nächsten Datensatz zu verschieben.

    Das bedeutet ich möchte bei jeden Push eigentlich folgendes tun:

    thisData->feld[top++] = neu;
    

    Das funktioniert aber nicht und ich erkenne nicht, warum. Ich möchte also eine Möglichkeit haben mehrere Einträge in feld zu haben und diese beim Auslesen mit thisData->feld[2].nr etc. ansprechen zu können.

    Vielen Dank schonmal und liebe Grüße!



  • Sry, falsches Forum, bitte in das C-Forum verschieben... war keine Abscht!


Log in to reply