我该如何从链表中删除一个节点?
这是我的代码:
void RemoveNode(Node * node, Node ** head) {
if (strcmp(node->state, (*(*head)->next).state) == 0) {
Node * temp = *head;
*head = (*head)->next;
free(temp);
return;
}
Node * current = (*head)->next;
Node * previous = *head;
while (current != NULL && previous != NULL) {
if (strcmp(node->state, (*current->next).state) == 0) {
Node * temp = current;
previous->next = current->next;
free(temp);
return;
}
current = current->next;
previous = previous->next;
}
return;
}
但是我不断收到段错误。
我觉得自己可能做了些傻事......有什么想法吗?
previous = previous->next
而不是只使用previous = current
? - Some programmer dude(*head)->next
指针?如果列表为空怎么办?如果列表中只有一个节点呢? - Some programmer dude