[英]Removing a node of a linked list in a recursive function
在花费了 10 多个小时后,开发了以下代码:
struct stockRecord* temp = NULL;
struct stockRecord* head = NULL;
struct stockRecord* prevptr = NULL;
struct stockRecord* recurfun(struct stockRecord* list) {
temp = list;
if (head == NULL) head = temp;
if (temp == NULL) {
return head;
} else {
/*first node*/
if (prevptr == NULL) {
if (strstr(temp->name, "ABC-") != NULL) {
temp = temp->next;
head = temp;
prevptr = head;
}
}
/*last node*/
if (temp->next == NULL) {
if (strstr(temp->name, "ABC-") != NULL) {
prevptr->next = NULL;
}
return head;
}
/*middle node*/
if (strstr(temp->name, "ABC-") != NULL) {
prevptr->next = temp->next;
} else {
if (prevptr != NULL) {
prevptr = temp;
} else {
prevptr = head;
}
}
return recurfun(temp->next);
}
问题是,当第一个节点和第二个节点也包含“ABC-”时,function 只删除第一个节点,第二个节点仍然无法删除。
我的代码有什么问题?
假设你从1->2->3
开始
删除第一个节点后,将prevptr
、 head
和temp
设置为全部指向2
。
然后在 function 的末尾,您递归地在 temp- temp->next
上调用它,它指向3
。
结果是您在删除第一个节点时跳过了第二个节点。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.