zoukankan      html  css  js  c++  java
  • 13:在O(1)时间内删除单向链表中的一个节点

    思路:如果从首部开始依次查找,那么时间是O(n).
    既然我们知道要删除的结点i,那么我们就知道它指向的下一个结点j,那么我们可以将j的内容复制到i,然后将i的指针指向j的下一个结点,这样虽然看起来我们删除的是j结点,但是实际删除的是i。
    此外还要考虑的问题是:如果结点不存在怎么办?如果结点是尾结点怎么办?链表只有一个结点?
    public class deleteInode {
    
        public static void main(String[] args) {
             ListNode head = new ListNode(0);
             ListNode node1 = new ListNode(1);
             ListNode node2 = new ListNode(2);
             ListNode node3 = new ListNode(3);
             head.setNext(node1);
             node1.setNext(node2);
             node2.setNext(node3);
             delete(head,node2);
             printListNode(head);
             
        }
        public static void delete(ListNode head,ListNode target){
            if(head==null||target==null){
                return;
            }
            if(head.getNext()==null){
                if(head==target){
                    head=null;
                }else{
                    return;
                }
            }
            if(target.getNext()==null){
                ListNode currentNode = head;
                while(currentNode.getNext()!=null){
                    currentNode = currentNode.getNext();
                }
                currentNode.setNext(null);
            }
            if(target.getNext()!=null){
                target.setValue(target.getNext().getValue());
                if(target.getNext().getNext()!=null){
                target.setNext(target.getNext().getNext()); 
                }else{
                    target.setNext(null);
                }
            }
        }
        public static void printListNode(ListNode head){
            ListNode current = head;
            while(current!=null){
                System.out.println(current.getValue()+"...");
                current = current.getNext();
            }
        }
    
    }
    
  • 相关阅读:
    创建网关项目(Spring Cloud Gateway)
    调用Consul服务(消费服务)
    创建调用Consul的客户端项目
    注册服务到服务中心(Consul)
    安装Consul服务中心
    创建Spring Boot微服务项目
    React学习之State
    React学习及实例开发(一)——开始
    React Native学习(十)—— 生命周期
    【小记事】电脑命令行开WiFi
  • 原文地址:https://www.cnblogs.com/andy-zhou/p/6547897.html
Copyright © 2011-2022 走看看