算法的思想就是:把P的前驱结点接上P的后继节点。然后P的后继节点的前驱节点指向P的前驱节点。这个时候P就被架空了。此时释放P.
代码:
void DDeleteNode(DListNode *p){
//假设*P非最后的尾结点
p->prior->next = p->next;//P的前置节点的后继节点指向P的后继节点
p->next->prior = p->prior;//P的后置节点的前驱节点指向P的前驱节点
free(p);//释放P
}
本文介绍了一种在双向链表中删除指定节点的有效方法。通过调整节点间的前后指针连接,使得待删除节点从链表中脱离并被安全释放。
算法的思想就是:把P的前驱结点接上P的后继节点。然后P的后继节点的前驱节点指向P的前驱节点。这个时候P就被架空了。此时释放P.
代码:
void DDeleteNode(DListNode *p){
//假设*P非最后的尾结点
p->prior->next = p->next;//P的前置节点的后继节点指向P的后继节点
p->next->prior = p->prior;//P的后置节点的前驱节点指向P的前驱节点
free(p);//释放P
}
4316

被折叠的 条评论
为什么被折叠?