阅读量:0
在C++中,删除单链表中的节点通常需要维护前一个节点以及当前节点。以下是一个删除单链表中特定节点的示例代码:
#include <iostream> struct ListNode { int val; ListNode* next; ListNode(int x) : val(x), next(nullptr) {} }; void deleteNode(ListNode* node) { if (node != nullptr && node->next != nullptr) { ListNode* temp = node->next; node->val = temp->val; node->next = temp->next; delete temp; } } int main() { ListNode* head = new ListNode(1); head->next = new ListNode(2); head->next->next = new ListNode(3); // 删除第二个节点 deleteNode(head->next); // 打印剩余节点 ListNode* curr = head; while (curr != nullptr) { std::cout << curr->val << " "; curr = curr->next; } return 0; }
在上面的示例中,删除节点的函数deleteNode
首先检查节点和其后一个节点是否存在,如果存在,就将后一个节点的值复制给当前节点,并删除后一个节点。这种方法可以在常量时间内删除指定节点,而不需要遍历整个链表。