以下是一个应该做三件事的函数:
1.删除链表中值N( char key
)的所有节点(值总是单字符。)
2.返回链表的头部。
3.所有这些都必须递归完成。
node* deleteN(node* head, char key)
{
node* prev;
node* cur;
if (head == NULL)
return NULL;
prev = head;
cur = head->next;
if (head->data == key && head->next != NULL)
{
node* temp = head;
head = temp->next;
free(temp);
}
if (cur->data == key && cur->next == NULL)
{
free(cur);
prev->next = NULL;
}
head->next = deleteN(head->next, key);
return head;
}
我的问题是我可以很好地删除节点,如您所见,如果节点是列表中的最后一个节点,我有一个特殊情况。但是,当我返回 head 时,head 没有指向任何东西,当我尝试对链表执行其他操作时会导致崩溃。
我的问题是:在删除所有值为 N 的节点后,如何在函数末尾指向链表的前面(它开始的地方),并返回这个指针?