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(); } }