package com.dugstudio.SwordToOfferBook.Singleton.Interview;
/** * @Author JH * @CreateDate 18-6-8 * @Description 在O(1)时间内删除链表节点 */
class Node{
public Integer value;
public Node next;
}
public class DeleteNode {
public void deleteNode(Node head, Node p){
//当头结点或者待删除的节点为空
if(p==null||head==null){
return;
}
Node q;
//若待删除的节点为尾节点
if (p.next==null){
q=head;
while(q!=null){
if (q.next==p)break;
q=q.next;
}
q.next=null;
return;
}
//将p的下一个节点q的值赋给p,让p指向q的下个节点,删除q
q=p.next;
p.value=q.value;
p.next=q.next;
q.next=null;
}
}
相关文章
- 在O(1)时间内删除链表节点
- 380. Insert Delete GetRandom O(1) 设计数据结构:在1的时间内插入、删除、产生随机数
- 在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5
- 13:在O(1)时间内删除单向链表中的一个节点
- LeetCode 237 Delete Node in a Linked List(在链表中删除节点)(Linked List)
- 在O(1)时间删除指定链表结点
- 剑指Offer:面试题13——在O(1)时间删除链表结点
- 布尔数组在O(1)空间和O(n)时间内重新排序
- Morris Traversal方法遍历二叉树(非递归,不用栈,O(1)空间)——无非是在传统遍历过程中修改叶子结点加入后继结点信息(传统是stack记录),然后再删除恢复
- 在O(1)时间内删除单链表结点