Java数据结构 - 循环链表

class LoopNode {
    // 节点内容
    private int data;
    // 下一个节点
    private LoopNode next;

    public LoopNode(int value) {
        this.data = value;
        // 将该节点的下一个节点指向自己
        this.next = this;
    }

    // 获取下一个节点
    public LoopNode next() {
        return this.next;
    }

    // 获取节点中的数据
    public int getData() {
        return this.data;
    }

    // 删除下一个节点
    public void removeNext() {
        // 先取出下下一个节点
        LoopNode nextNextNode = next.next;
        // 把下下一个节点设置为当前节点的下一个节点
        this.next = nextNextNode;
    }

    // 对于循环链表来说,单链表的插入操作就是添加节点的操作,但添加时每次都要从最后一个节点往后添加
    // 插入一个节点作为当前节点的下一个节点
    public void insert(LoopNode node) {
        // 取出下一个节点,作为下下一个节点
        LoopNode nextNode = next;
        // 把新节点作为当前节点的下一个节点
        this.next = node;
        // 把下下一个节点设置为新节点的下一个节点
        node.next = nextNode;
    }
}

public class Main {
    public static void main(String[] args) {
        LoopNode ln1 = new LoopNode(1);
        LoopNode ln2 = new LoopNode(2);
        LoopNode ln3 = new LoopNode(3);

        // 增加节点
        ln1.insert(ln2);
        ln2.insert(ln3);

        System.out.println(ln1.next().getData());
        System.out.println(ln2.next().getData());
        System.out.println(ln3.next().getData());
    }
}

 

你可能感兴趣的:(Java数据结构 - 循环链表)