在C++中,刪除單鏈表中的節(jié)點(diǎn)通常需要維護(hù)前一個(gè)節(jié)點(diǎn)以及當(dāng)前節(jié)點(diǎn)。以下是一個(gè)刪除單鏈表中特定節(jié)點(diǎn)的示例代碼:
#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);
// 刪除第二個(gè)節(jié)點(diǎn)
deleteNode(head->next);
// 打印剩余節(jié)點(diǎn)
ListNode* curr = head;
while (curr != nullptr) {
std::cout << curr->val << " ";
curr = curr->next;
}
return 0;
}
在上面的示例中,刪除節(jié)點(diǎn)的函數(shù)deleteNode
首先檢查節(jié)點(diǎn)和其后一個(gè)節(jié)點(diǎn)是否存在,如果存在,就將后一個(gè)節(jié)點(diǎn)的值復(fù)制給當(dāng)前節(jié)點(diǎn),并刪除后一個(gè)節(jié)點(diǎn)。這種方法可以在常量時(shí)間內(nèi)刪除指定節(jié)點(diǎn),而不需要遍歷整個(gè)鏈表。