2013-09-02 2 views
2

포인터를 전달하고 멤버 (* list)에 액세스하여 링크 된 목록에 노드를 추가하려고하면 -> 다음으로 세그먼트 오류가 발생합니다. 누군가가 미리 실수를 지적 할 수 있습니까? 코드는 당신은 NULL 포인터 역 참조, 그렇지 않으면 예상대로 원세그 오류를 얻을 안이중 포인터를 사용하여 연결된 목록의 노드에 액세스

void initializeList (node ** head, int data) 
{ 
    *head = malloc (sizeof (node)); 
    (*head)-> member = data; 
    (*head)-> next = NULL; 
} 

void addNode(node ** list, int data) 
{ 
    node * newNode = NULL; 
    newNode = malloc (sizeof (node)); 
    while (*list->next!= NULL) 
    { 
     *list= (*list) -> next; 
    } 
    newNode -> member = data; 
    newNode -> next = NULL; 
    (*list) -> next = newNode; 
} 

void main() 
{ 
    node * head = NULL; 
    initializeList (&head, 5); 
    addNode(&head, 6); 
} 
+1

흠 ... 나는 while 루프 '* list'가'NULL'과 같고'(* list) -> next = newNode;'에서 그것을 역 참조하려고 할 때, 오류. –

답변

3

입니다.

while (*list != NULL) 
    { 
    *list= (*list) -> next; 
    } 
newNode -> member = data; 
newNode -> next = NULL; 
(*list) -> next = newNode; 

*list는 while 루프 후 NULL입니다 :

다음은 문제입니다. 당신이 보장
그리고 당신은 그것의 멤버와 다음 값 사용 동안 설정할 수 없습니다 루프 후 NULL로 (*list) -> next = newNode;

0

newNode 포인트를하고있다 (* 목록 -> 다음을! = NULL)

dereferencing NULL이 아닌

관련 문제