双向循环链表

 

 通过任何节点可以找到他的上一个节点和下一个节点

package demo2;

//双向循环链表
public class DoubleNode {
    // 上一个节点
    DoubleNode pre = this;
    // 下一个节点
    DoubleNode next = this;

    // 数据
    Object data;

    public DoubleNode(Object data) {
        this.data = data;
    }

    // 增加节点
    public void insert(DoubleNode node) {
        // 原来的下一个节点
        DoubleNode nodeNext = this.next;
        // 把原來的下一个节点设置为新节点
        this.next = node;
        // 把新节点的上一个节点设置为原来的节点
        node.pre = this;
        // 把新节点的下一个节点设置为原来的下一个节点
        node.next = nodeNext;
        // 将新节点的上一个节点设置为新节点
        nodeNext.pre = node;
    }

    public DoubleNode next() {
        return this.next;
    }

    public DoubleNode pre() {
        return this.pre;
    }

    public String getData() {
        return this.data.toString();
    }

}
package demo2.test;

import demo2.DoubleNode;

public class TestDoubuleNode {

    public static void main(String[] args) {
        DoubleNode n1 = new DoubleNode("1");
        DoubleNode n2 = new DoubleNode("2");
        DoubleNode n3 = new DoubleNode("3");

        n1.insert(n2);
        n2.insert(n3);
        
        System.out.println(n2.pre().getData());
        System.out.println(n2.getData());
        System.out.println(n2.next().getData());
    }
}

 

posted @ 2020-04-07 15:13  已老  阅读(81)  评论(0)    收藏  举报