java实现双向链表操作

来源:互联网 发布:linux网卡怎么激活 编辑:程序博客网 时间:2024/06/05 18:32

跟单向一个路子,没啥可说的,直接上代码:

public class DoubleLink {    public Node first;    public Node last;    class Node {        int data;        Node lnext;        Node rnext;        public Node(int data) {            this.data = data;            this.lnext = null;            this.rnext = null;        }    }    public boolean isEmpty() {        return first==null;    }    public void print() {        Node current = first;        while (current != null) {            System.out.println(current.data);            current = current.rnext;        }    }    public void insert(Node newNode) {        Node node;        Node tmp = null;        if(isEmpty()) {            first = newNode;            first.rnext = last;            last = newNode;            last.lnext = first;        } else {            //插入表头            if(newNode.lnext == null) {                first.lnext = newNode;                newNode.rnext = first;                first = newNode;            } else {                //插入表尾                if(newNode.rnext == null) {                    last.rnext = newNode;                    newNode.lnext = last;                    last = newNode;                } else {                    node = first;                    while (newNode.rnext != node.rnext) {                        tmp = node;                        node = node.rnext;                    }                    tmp.rnext = newNode;                    newNode.rnext = node;                    node.lnext = newNode;                    newNode.lnext = tmp;                }            }        }    }    public void delete(Node delNode) {        Node node;        Node tmp;        if(isEmpty()) {            return;        }        if(delNode == null) {            return;        }        if(first.data == delNode.data) {            first = first.rnext;            first.lnext = null;        }        else {            tmp = first;            node = first;            while (node.data != delNode.data) {                tmp = node;                node = node.rnext;            }            tmp.rnext = delNode.rnext;            tmp.lnext = delNode.lnext;        }    }    public static void main(String[] args) {        DoubleLink dl = new DoubleLink();        Node node1 = dl.new Node(80);        Node node2 = dl.new Node(90);        dl.insert(node1);        dl.insert(node2);        dl.print();        System.out.println("删除之后——");        dl.delete(node2);        dl.print();    }}

运行截图

0 0
原创粉丝点击