2017-03-20 2 views
0

우리는 수행 할 때 insertLast (INT 항목) 기능, 우리가 할 다음 단계 :삽입 요소 링크 된 목록에서

struct node *temp; 
struct node *newItem; 
newItem = (struct node*)malloc(sizeof(struct node)); 
temp = head; 
while(temp->next != NULL){ 
    temp = temp->next; 
} 
temp->next = newItem; 
newItem->next = NULL; 

하지만 우리가 할 경우 :

struct node *temp; 
struct node *newItem; 
newItem = (struct node*)malloc(sizeof(struct node)); 
temp = head; 
while(temp != NULL){ 
    temp = temp->next; 
} 
temp = newItem; 
newItem->next = NULL; 

우리 오류가 발생하는 이유는 무엇입니까?

답변

1

temp == NULL으로 종료됩니다

while(temp != NULL){ 
    ... 
} 

루프, 즉리스트의 끝을지나 실행 한 후입니다. 그런 다음

temp = newItem; 

temp 변수에 새로 만든 객체에 대한 포인터를 할당합니다 -하지만 더 이상 목록과는 아무 상관이 없습니다.

따라서 '오류'에 대한 이유는 없습니다 (단, 새 항목은 이 아니며은 목록에 추가되지 않습니다).

0

두 번째 코드 블록에서는 마지막 요소에서 새로 삽입 된 요소를 가리 키도록 링크를 설정하지 않습니다.