我知道指針如何工作。爲什麼** head在這裏被用來代替* head?
我做了類似的問題,這樣
deleteNode(struct node *head_ref, int key);
這是工作和@這裏http://quiz.geeksforgeeks.org/linked-list-set-3-deleting-node/他們已經使用
deleteNode(struct node **head_ref, int key);
這也是正確的,但有沒有理由這樣做,將一日一失敗在任何情況下或是不好的方式等。
struct linked_list *deleteNode(struct linked_list *head, int key)
{
struct linked_list *prevNode,*current,*temp;
if(head==NULL)
return head;
if(head->data==key)
{
if(head->next==NULL)
{ free(head);
return NULL;
}
else
temp=head->next;
free(head);
return temp;
}
prevNode= head;
current=head->next;
printf("\n %d\n",(current->data));
while((current!=NULL) && (current->data!=key))
{ printf("\n here");
prevNode= current;
current=current->next;
}
if(current==NULL){
printf("\n element not present in list !\n");
return head;
}
if(current->next==NULL)
prevNode->next=NULL;
else
prevNode->next=current->next;
free(current);
return head;
}
head=deleteNode(head,key);
一個是指針,另一個是指向指針的指針。 – Siguza
要改變一個對象(從一個函數內),你需要一個指向它的指針。如果該對象碰巧是一個指針,那麼您將需要一個指向指針的指針。期。 – wildplasser