给定链表的头指针和一个节点指针,在O(1)时间删除该节点。
时间: 2023-05-10 08:56:09 浏览: 43
可以通过将该节点的下一个节点的值复制到该节点,然后删除下一个节点来实现O(1)时间删除该节点。具体实现如下:
```c++
void deleteNode(ListNode* head, ListNode* node) {
if (!head || !node) return;
if (node->next) {
ListNode* next = node->next;
node->val = next->val;
node->next = next->next;
delete next;
} else if (head == node) {
delete node;
head = nullptr;
} else {
ListNode* cur = head;
while (cur->next != node) cur = cur->next;
cur->next = nullptr;
delete node;
}
}
```
这段代码可以在O(1)时间内删除给定链表的头指针和一个节点指针。