• 双向链表的增删该查


    public class DubbleLinkList {
    
        private Node head=null;
    
        public void addNode(Node node){
            if(node==null){
                return;
            }
            if(null==head){
                head=node;
                return;
            }
            if(head.getNext()==null){
                head.setNext(node);
                node.setPrev(head);
                return;
            }
            Node temp=head.getNext();
            while (true){
                if(temp.getNext()==null){
                    break;
                }
                temp=temp.getNext();
            }
            temp.setNext(node);
            node.setPrev(temp);
        }
    
        public boolean isEmpty(){
            return head==null;
        }
    
        public void printList(){
            if(this.isEmpty()){
                return;
            }
            Node temp=head;
            while (true){
                if(temp==null){
                    break;
                }
                System.out.println(temp);
                temp=temp.getNext();
            }
        }
        public void printReverserList(){
            if(this.isEmpty()){
                return;
            }
            if(head.getNext()==null){
                System.out.println(head);
                return;
            }
            Node last=head;
            while (true){
                if(last.getNext()==null){
                    break;
                }
                last=last.getNext();
            }
            Node prev=last;
            while (true){
                if(prev==null){
                    break;
                }
                System.out.println(prev);
                prev=prev.getPrev();
    
            }
    
        }
    
        public void updateNode(Node oldNode,Node newNode){
            Node temp=head;
            if(isEmpty()){
                return;
            }
            while (true){
                if(temp==oldNode){
                    break;
                }
                if(temp==null){
                    break;
                }
                temp=temp.getNext();
            }
            if(temp==null){
                return;//没找到
            }
            if(head==oldNode){
                newNode.setNext(head.getNext());
                head.getNext().setPrev(newNode);
                head=newNode;
                return;
            }
            newNode.setNext(temp.getNext());
            temp.getNext().setPrev(newNode);
            temp.getPrev().setNext(newNode);
            newNode.setPrev(temp.getPrev());
    
    
        }
    
        public void delNode(Node node){
            if(isEmpty()){
                return;
            }
            Node temp=head;
            while (true){
                if(temp==node){
                    break;
                }
                if(temp==null){
                    break;
                }
                temp=temp.getNext();
            }
            if(temp==null){
                return;
            }
            if(temp.getNext()==null){ //最后一个了
                if(temp.getPrev()==null){
                    //只有一个head节点
                    head=null;
                    return;
                }
                //最后一个
                Node prev = temp.getPrev();
                prev.setNext(null);
                node.setPrev(null);
                return;
            }
            Node next = temp.getNext();
            Node prev = temp.getPrev();
            prev.setNext(next);
            next.setPrev(prev);
            temp.setPrev(null);
            temp.setNext(null);
    
    
        }
    
        public static void main(String[] args) {
            Node yang = new Node(1, "yang");
            Node xiao = new Node(1, "xiao");
            Node hui = new Node(1, "hui");
            Node yun = new Node(2, "yun");
            DubbleLinkList linkList = new DubbleLinkList();
            linkList.addNode(yang);
            linkList.addNode(xiao);
            linkList.addNode(hui);
            linkList.printList();
            System.out.println("逆向da打印");
            linkList.updateNode(xiao,yun);
            linkList.printReverserList();
            System.out.println("删除节点开始。。。。。。。。。");
            linkList.delNode(hui);
            linkList.delNode(yun);
            linkList.delNode(yang);
            linkList.printList();
    
        }
    }
  • 相关阅读:
    错误日志记录代码
    将数组转换成datatable
    C#类头注释
    判断当前页面是否接收到了Get或者Post请求
    HttpRequestUtil类
    WeChatUtil类
    返回上一页
    更改同步异步
    限制只能输入数字
    判断浏览器及版本
  • 原文地址:https://www.cnblogs.com/yangxiaohui227/p/13602018.html
Copyright © 2020-2023  润新知