c++ listnode删除节点的技巧

avatar
作者
猴君
阅读量: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首先检查节点和其后一个节点是否存在,如果存在,就将后一个节点的值复制给当前节点,并删除后一个节点。这种方法可以在常量时间内删除指定节点,而不需要遍历整个链表。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!