c_cpp 删除O(1)中链表中的节点
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 删除O(1)中链表中的节点相关的知识,希望对你有一定的参考价值。
void delete_node(TreeNode **head, TreeNode *p) {
if(*head == NULL || p == NULL) return;
if(*head == p) {
delete p;
p = NULL; // necessary
*head = NULL;
return;
}
if(p->next != NULL) {
TreeNode *nxt = p->next;
p->val = nxt->val;
p->next = nxt->next;
delete nxt;
nxt = NULL; // necessary
}
else {
TreeNode *c = *head;
while(c->next->next) {
c = c->next;
}
delete c->next;
c->next = NULL;
}
}
// another way
void delete_node(node *head, node *p) {
if(!head || !p) return;
node dummy(-1);
dummy.next = head;
if(p == head) {
dummy.next = head->next;
delete head;
head = dummy.next;
return;
}
if(p->next) {
...
} else {
...
}
}
以上是关于c_cpp 删除O(1)中链表中的节点的主要内容,如果未能解决你的问题,请参考以下文章
C中链表中的错误
c语言中链表的问题
Python中链表中的'AttributeError'
c_cpp 从已排序的链表中删除重复值节点 - Hackerrank
链表问题----删除倒数第K个节点
剑指Offer之在O时间删除链表节点