Problem mit Listen traversierung



  • Hi !

    Ich habe eine Frage bezüglich einer Listen traversierung!

    Also ich habe eine Funktion in der ich eine Liste habe!
    Nun übergebe ich die Liste an eine andere Funktion!
    In dieser Funktion traversiere ich einmal komplett durch die Liste(mit while) bis sie NULL ist!

    Nun ist das Problem das wenn die Arbeit in der Funktion getan ist, ist die Liste in meiner Ausgangsfunktion leer!

    Ist ja auch logisch!

    Nur wie kann ich das ganze umgehen!

    Muss ich mir extra eine Funktion schreiben die mir eine Kopie einer Liste erzeugt oder reicht es die Funktion umzubauen!
    Nämlich die while durch eine rekursion ersetzen????



  • Besteht die Möglichkeit, dass du mal deine Liste präsentierst, vielleicht auch mit der Funktion ?



  • Thes-One schrieb:

    Ist ja auch logisch!

    Nein, ist nicht logisch. Man muss das auch nicht umgehen. Du übergibst wahrscheinlich den Listenkopf per Referenz und missbrauchst ihn zum traversieren.

    Nämlich die while durch eine rekursion ersetzen????

    Wow, ein Satz ohne Ausrufezeichen!



  • Es ist eine Einfach verkettete Liste!
    also:
    ->next
    ->Wert

    int get_anzahl(unsigned int ID, Liste  MYLIST){
    unsigned int A=0;
    while ( MYLIST != NIL ){
        if (MYLIST->wert == ID) 
            A++;
        MYLIST = MYLIST->next;
        }
    return A;
    }
    


  • Sieht richtig aus.



  • @Thes-One: du hast ein Talent, uns weiterhin im Dunkeln zu lassen 🙄

    wie sieht das Datentyp Liste aus? Und wie übrgibst du die Daten an get_anzahl? Was ist NIL?



  • Arghhh...

    mit Nil (Delphi) meinte ich NULL!
    List ist eine einfache verkettete Liste!

    typedef struct Knoten *Liste;
    
    struct Knoten
    {
      List next;
      int value;
    };
    

    Die Funktion wird in der main so aufgerufen..

    unsigned int i;
    .
    ..
    ...
    if get_anzahl(i,(*successfulTransactions))!=0){
    ...
    ..
    .
    }
    


  • Wo ist den da jetzt der Fehler, kann mir keiner helfen??
    Ist dringend!


Anmelden zum Antworten