



这个输入了三个数据应该算三个节点吧,为什么只能删除第一个和第二个节点呢,不是有三个节点吗,第一个节点是从1开始计还是说第一个节点是0开始的呀?这两个点不懂




这个输入了三个数据应该算三个节点吧,为什么只能删除第一个和第二个节点呢,不是有三个节点吗,第一个节点是从1开始计还是说第一个节点是0开始的呀?这两个点不懂
关注让 “紫雾凌寒” 来帮你回答,本回答结合 DeepSeek
如果还有问题,请评论或点击头像私信,如果有帮助到您, 请关注、采纳、点赞
typedef struct Node {
int data;
struct Node* next;
} Node;
target的节点):Node* deleteNode(Node* head, int target) {
if (head == NULL) {
return head;
}
while (head!= NULL && head->data == target) {
Node* temp = head;
head = head->next;
free(temp);
}
Node* current = head;
while (current!= NULL && current->next!= NULL) {
if (current->next->data == target) {
Node* temp = current->next;
current->next = current->next->next;
free(temp);
} else {
current = current->next;
}
}
return head;
}
Node* deleteNodeRecursive(Node* head, int target) {
if (head == NULL) {
return head;
}
head->next = deleteNodeRecursive(head->next, target);
if (head->data == target) {
Node* temp = head;
head = head->next;
free(temp);
}
return head;
}
- **优点**:代码简洁,递归调用使代码结构清晰,尤其是对于链表操作的递归处理。
- **缺点**:递归深度较大时可能导致栈溢出,并且递归调用的开销相对较大。
希望以上解答对您有所帮助。如果您有任何疑问,欢迎在评论区提出。