入力がリンクリストへのポインターであるリンクリスト内のノードを削除する関数を作成していました。関数がノードを 1 つしか持たないリンク リストを削除する場合、関数はポインターを NULL を指すようにします。コードの一部を次に示します。
void remove(dlinkNode_t *start){
//some previous code
if(start->next==NULL){//meaning we're removing the head of the linked list
dlinkNode_t current=start; //get a temp pointer to point at this node
start=NULL; //make start point to null
free(current); //free the head
return;
}
// More code
メインでは、1 つのノードでリンク リストを作成し、このリンク リストを remove 関数に渡して解放しました。コードは次のとおりです。
int main(){
dlinkNode_t *node1=create(); //creates a node and make node1 point at it
remove(node1); //now node1 should point at NULL
if(node1==NULL)
printf("hi");
return 0;
}
しかし、こんにちはが印刷されているのを見ませんでした。if 文が通らなかった理由がわかりません。何か案は?