2017-05-06 6 views
1

Dies ist mein Code zum Verketten mit Listen, aber aus irgendeinem Grund endet er in einer Schleife und hört nicht auf.Wie kann ich 2 Listen zusammenführen (verketten)?

void concatenate(){ 
     p2 = first2; 
     while (p2 != NULL) { 
      p = new list; 
      p->data = p2->data2; 
      last->next = p; 
      last = p; 
      p2 = p2->next2; 
     } 
    } 

Daten - die Informationen der ersten Liste
DATA2 - die Informationen der zweiten Liste
zuletzt - ein Zeiger aus der ersten Liste
p - Zeiger aus der ersten Liste
p2 - Zeiger von die zweite Liste

+0

Warum erstellen Sie eine neue Liste in einer Funktion zum Verketten? – aschepler

+0

@aschpler Ich füge einen neuen Knoten für die erste Liste – Roland

Antwort

0
void concatenate(){ 

     last->next = first2; // done 

    } 

    //if not the same type or cannot be casted 


    void concatenate(){ 
     if (first2 == null){ 
      last->next = 0; 
      return; 
     } 

     last->next = new list(first2->data2); //connect the lists 
     first2=first2->next; 
     last=last->next; 

     while(first2->next) // copy the values 
     { 
      last->next = new list(first2->data2); 
      first2=first2->next; 
      last=last->next; 

     } 
     last->next=0; 
    } 
+0

Ich versuchte etwas gemocht, aber aus irgendeinem Grund heißt es, dass es nicht "List2" in "Liste" konvertieren kann. Vielleicht, weil der Zeiger "first2" in der ersten Liste verwendet wird? – Roland

+0

Sie sind nicht vom selben Typ, sind sie voneinander abgeleitet? Können Sie die Deklaration für Liste und Liste2 posten? – didiz

+0

'struct list { Int Daten; Liste * nächste; }; Liste * p, * zuerst, * zuletzt; // int ok; struct list2 { int data2; list2 * next2; }; ' – Roland

Verwandte Themen