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();
            }
        }
    
    }
    
  • 相关阅读:
    第九章 jQuery验证插件简介
    第八章 jQuery与Ajax应用
    第七章 jQuery操作表格及其它应用
    [wpf笔记] 1.xaml
    [2014-10-11]wpf数据绑定
    [2014-9-15]异步委托线程高级
    [2014-9-13]委托多线程
    [2014-9-12]多线程
    [2014-9-11]异步编程继续
    [2014-9-10]异步编程
  • 原文地址:https://www.cnblogs.com/andy-zhou/p/6547897.html
Copyright © 2011-2022 走看看