2010-01-01 74 views
0

addAtBegin有什麼不對?在將新創建的node分配給start後,該列表似乎是正確的,但是當控制返回到main時,新值不會保存。如何在鏈表的開頭插入節點?

typedef struct node 
{ 
    int data; 
    struct node *link; 
}node; 

node* createList(int data) 
{ 
    node *tempNode=(node*)malloc(sizeof(node)); 
    tempNode->data=data; 
    tempNode->link=NULL; 
    return tempNode; 
} 

void addAtBegin(node *start,int data) 
{ 
    node *addedNode=(node *)malloc(sizeof(node)); 
    addedNode->data=data; 
    addedNode->link=(start==NULL)?NULL:start; 
    start=addedNode; 
} 

void displayNodes(node *start) 
{ 
    node *startCopy=start; 
    while(startCopy!=NULL) 
    { 
     printf("%d\t",startCopy->data); 
     startCopy=startCopy->link; 
    } 
    printf("\n"); 
} 

int main() 
{ 
    node *start=createList(2); 
    addAtBegin(start,1); 
    displayNodes(start); 
    return 0; 
} 

回答

5

看起來像另一個列表的問題對我來說,用相同的答案,因爲他們大多 - 開始應該是一個指針的指針。

+1

或者應該返回addedNode,就像createList一樣。 – 2010-01-01 18:11:59

+0

謝謝,問題解決了 – user158625 2010-01-01 18:17:10