2014-10-17 1 views
-3

이 코드는 목록이 void의 매개 변수로 사용될 때 연결된 목록의 머리글을 제거합니다.링크 목록의 마지막 노드를 void로 전달하여 제거 하시겠습니까?

void removeNode(node** head) { 
    (*head) = NULL; 
} 

인수로 사용 된 목록의 마지막 항목을 NULL로 설정하려면이 코드를 어떻게 변경해야합니까?

참고 : 주 보이드에서이 메서드를 호출하고 'head'매개 변수로 사용되는 목록의 마지막 노드를 NULL로 지정합니다.

+0

제거하면 어떻습니까? 삭제 하시겠습니까? 할당 된 메모리는 free (ptr)를 사용하여 해제해야합니다. – Gopi

+0

"공백으로 전달"? –

+1

"이 코드는 연결된 목록의 머리를 제거합니다. 왜이 작업을 수행 하시겠습니까? 어떤 종류의 FIFO를 구현하려고합니까? "목록은 무효의 매개 변수로 사용됩니다." "NULL로 인수로 사용되는 목록의 마지막 항목을 설정하려면이 코드를 어떻게 변경해야합니까?" 이것이 당신이하고 싶은 것이라면, 왜 포인터를 포인터로 전달할 것인가? "main void"메인 void가 무엇입니까? – Lundin

답변

1
void removeLastNode(node ** head) 
{ 
    if(!head || !(*head) || !(*head->next)) 
     return; 
    node * tmp = *head; 
    node * new_last; 
    // Reach the last node 
    for(;tmp->next;) 
    { 
     new_last = tmp; 
     tmp = tmp->next; 
    } 
    freeNode(tmp); 
    tmp = NULL; 
    new_last->next = NULL; 
} 
+0

충분하지 않습니다. – BLUEPIXY

+0

@ 코코넛 당신이 NULL 값을 삭제하는 것을 의미합니까? 할당 된 메모리가 아직 해제되지 않았습니다. – Gopi

+0

@ 코코프 이것은 실제로 노드를 NULL로 설정하지 않습니다. 이전 노드를 NULL로 설정해야 할 필요가 없습니까? – Anton

관련 문제