2016-12-22 121 views
0

這是我的第一個問題! 我使用鏈接列表和函數。指針,鏈表和函數

我已經創建了這個函數,它將結構(Passenger)中的值複製到鏈表LIST1。

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; 
      } 
     } 
    } 

裏面主要我調用該函數用下面的語句

int main() 
PASSENGERS *passenger; 
int h; 

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

但是我在印刷時得到什麼:

LIST1 *current = list1; 


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

如果我不使用的功能和移動主一切內的代碼工作正常,所以可能這是一個指針問題,我仍然試圖使用! 謝謝

+1

你沒回從copylist()函數的任何信息。 –

回答

1

修改您的copylist功能像: -

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; 
    }