我正在编写一个函数,它删除链表中的一个节点,其输入是一个指向链表的指针。如果该函数删除一个只有一个节点的链表,该函数将使指针指向 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
在 main 中,我创建了一个带有一个节点的链表,并将该链表传递给删除函数以释放它。这是代码:
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;
}
但是我没有看到打印的hi。我不知道为什么 if 语句没有通过。有任何想法吗?