zoukankan      html  css  js  c++  java
  • 循环单链表(七)

    循环单链表和单链表最大的区别是它的某个节点会指向该链表的头节点。通过循环你会发现该链表循环不尽,整个链表形成一个环。

    循环链表插入元素

     1、找到该链表的下一个节点

     2、新元素的下一个节点指向该链表的下一个节点。

     3、该链表的下个节点指向新元素。

    代码

    public class LoopNode {
    
        int data;
        //循环链表初始化 next默认为自身
        LoopNode next = this;
    
    
           public LoopNode after(LoopNode node) {
            LoopNode nextNodes = this.next;
            // 直接插入在当前节点后面 无法循环到最后一个
            node.next = nextNodes;
            // 最后一个节点下一个节点指向 node
            this.next = node;
            // 循环列表
            return this;
        }
    
    
    }

    删除节点

    1、找到该元素的下下个节点。

    2、当前链表的下个节点指向下下个节点。

    代码

    public class LoopNode {
    
        int data;
        //循环链表初始化 next默认为自身
        LoopNode next = this;
    // 删除节点
        public void remove() {
            // 先取出下下个节点
            LoopNode nextNode = next().next();
            this.next = nextNode;
        }
    
    }

    所有代码

    public class LoopNode {
    
        int data;
        //循环链表初始化 next默认为自身
        LoopNode next = this;
    
        public LoopNode(int data) {
            this.data = data;
        }
    
        public LoopNode after(LoopNode node) {
            LoopNode nextNodes = this.next;
            // 直接插入在当前节点后面 无法循环到最后一个
            node.next = nextNodes;
            // 最后一个节点下一个节点指向 node
            this.next = node;
            // 循环列表
            return this;
        }
    
        // 删除节点
        public void remove() {
            // 先取出下下个节点
            LoopNode nextNode = next().next();
            this.next = nextNode;
        }
    
        public LoopNode next() {
            return this.next;
        }
    
        public int getData() {
            return data;
        }
    
    }

    测试代码

    public class NodeTest {
    
        public static void main(String[] args) {
            LoopNode loopNode1 = new LoopNode(1);
            LoopNode loopNode2 = new LoopNode(2);
            LoopNode loopNode3 = new LoopNode(3);
            loopNode1.after(loopNode2);
            loopNode2.after(loopNode3);
            System.out.println(loopNode1.next.next.getData());
    
        }
    }
  • 相关阅读:
    移植thinkPHP的dump()函数
    PHP生成linux命令行进度条
    没有ORM库的时候,通过PDO连接MySQL的方法
    mysql json字符串 解析成对应字段
    linux上安装并启动nginx
    linux上启动redis
    mui的input搜索框里的清除按钮的点击监听事件
    miniui 修改input样式及弹出框按钮文字
    js 删除数组元素的方法
    miniui反选
  • 原文地址:https://www.cnblogs.com/laolei11/p/10643192.html
Copyright © 2011-2022 走看看