2016-12-22 3 views
0

das ist meine erste Frage hier! Ich arbeite mit verknüpften Listen und Funktionen.Zeiger, verkettete Liste und Funktion

Ich habe diese Funktion erstellt, die Werte von einer Struktur (Passagier) in eine verknüpfte Liste LIST1 kopiert.

typedef struct 
    { 
    char fillname[40] 
    }PASSENGERS; 


typedef struct list1 
    { 
    char fullname[40]; 
    struct list1 *next; 
    }LIST1; 



    //COPYLIST 

copylist(LIST1 *list1, PASSENGERS *passenger) 
    { 

    LIST1 *start=NULL; 
    for (i=0;i<40;i++) 
     { 
     list1 = (LIST1 *) malloc (sizeof(LIST1)); 
     list1->next = NULL; 
     strcpy(list1->fullname,passenger[i].fullname); 

     if (start ==NULL) 
      start = list1; 
     else //add new node at the beginning of list 
      { 
      list1->next = start; 
      start = list1; 
      } 
     } 
    } 

Innerhalb Haupt i rufen Sie die Funktion mit der folgenden Aussage

int main() 
PASSENGERS *passenger; 
int h; 

LIST1 *list1; 
list1=copylist(list1,passenger); 

aber ich nichts bekommen, wenn es mit Druck:

LIST1 *current = list1; 


    while (current !=NULL) 
     { 
     printf("%s",current->fullname); 
     current = current->next; 

Wenn ich keine Funktion und Bewegung der code in main alles funktioniert gut, also wahrscheinlich ist es ein problem mit zeiger, dass ich immer noch versuche, sich zu gewöhnen! Danke

+1

Sie nichts zurückgekommen von Kopierliste() Funktion. –

Antwort

1

Ändern Sie bitte Ihre Kopierliste Funktion wie folgt aus: -

LIST1 *copylist(LIST1 *list1, PASSENGERS *passenger) 
    { 

     LIST1 *start=NULL; 
     int i=0; 
     for (i=0;i<40;i++) 
      { 
      list1 = (LIST1 *) malloc (sizeof(LIST1)); 
      list1->next = NULL; 
      strcpy(list1->fullname,passenger[i].fullname); 

      if (start ==NULL) 
       start = list1; 
      else //add new node at the beginning of list 
       { 
       list1->next = start; 
       start = list1; 
       } 
      } 
      return start; 
    }