Verständnisproblem bei einfach verketterer Liste...



  • Das Programm liest über die Tastatur integer Zahlen ein und gibt sie dann rückwärts wieder aus.

    #include <stdio.h>
    #include <stdlib.h>

    struct liste{
    int zahl;
    struct liste *next;
    };

    int main (void)
    {
    struct liste *start=NULL;
    struct liste *help=NULL;

    printf("Integers eingeben! Beenden 0 !\n");
    do{
    help = start;
    start = (struct liste *)malloc (sizeof(struct liste));
    scanf("%i",&start->zahl);
    start->next = help;

    }while(start->zahl != 0);
    help = start;
    printf("Folgende Liste hast sich ergeben!\n");
    while (help != NULL)
    { printf("help->next->Zahl: %i an Stelle: %i\n",help->next->zahl,help->next);
    printf("%i an der Stelle: %i\n",help->zahl,help);
    help=help->next;
    }
    return(0);
    }

    Mein Problem besteht bei der unterstrichenen Zeile in der Ausgabe am Ende des Quelltextes. Wieso zeigt der help->next immer auf das vorige Element? Müsste es nicht so sein, dass er auf das nächste Element von help aus gesehen zeigen müsste?
    Ich denk es is nur ein kleiner Gedankenfehler den ich hab, aber ich komm einfach nicht drauf...



  • help->next zeigt doch auf das nächste Element der Liste. Allerdings hast du neue Elemente immer am Anfang der Liste angehängt und deshalb stehen die Werte schon in umgekehrter Reihenfolge dort drin (und das jeweils nächste Element ist das in der Eingabereihenfolge vorherige).



  • Oh okay, ich Trottel...
    Wenn man die Überschrift in meinem Script liest steht ja da:"Elemente am Anfang einer Liste einfügen "! :p
    Alles klar, vielen Dank!


Anmelden zum Antworten