阿抗

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8

简单链表实例

复制代码
public class Link {
    class Node { // 把节点类定义成内部类
        private String data;
        private Node next;

        public Node(String Data) {
            this.data = data;
        }

        /**
         * 添加节点的方法
         */
        public void add(Node newNode) { // 增加add方法
            if (this.next == null) { // 判断下一个节点是否为空
                this.next = newNode;// 如果下一个节点为空,则设置下一个节点为newNode
            } else { // 如果不为空
                this.next.add(newNode);// 调用下一个节点的add方法
            }
        }

        /**
         * 打印方法
         */
        public void print() {
            System.out.print(this.data+"\t");
            if (this.next != null) {    //如果下一个节点不为空,则继续打印
                this.next.print();    //输出下一个节点
            }
        }

        /**
         * 搜索方法
         */
        public boolean search(String data) {//内部定义搜索方法
            if (data.equals(this.data)) {  //判断当前节点的名字是否与查找的一致
                return true;          //如果一直,返回true
            } else {              //继续判断下一个
                if (this.next != null) {  //下一个节点存在则继续查找
                    return this.next.search(data);//返回下一个的查询结果
                }
            }
            return false;      //没找到,则返回false
        }

        /**
         * 删除节点
         */
        public void delete(Node Previous, String data) {
            if (data.equals(this.data)) {      //找到了匹配的节点
                Previous.next = this.next;      //空出当前节点
            } else {
                if (this.next != null) {
                    this.next.delete(this, data);  //继续向下找
                }
            }
        }
    }

    private Node root; // 表示根节点

    /**
     * 添加方法
     */
    public void addNode(String data) {
        Node newNode = new Node(data);    //建立一个新的节点
        if (this.root == null) {        //判断是否有根节点
            this.root = newNode;        //赋值根节点
        } else {
            this.root.add(newNode);      //添加到合适位置
        }
    }

    /**
     * 输出所有信息
     */
    public void printNode() {
        if(this.root!=null){      //判断是否存在根节点
            this.root.print();      //输出所有节点信息
        }
    }
    /**
     * 判断是否包含某元素
     */
    public boolean contains(String data){
        return this.root.search(data);      //调用Node类的search方法
    }
    /**
     * 删除方法
     */
    public void deleteNode(String data){
        if(this.contains(data)){        //判断是否存在查找的信息
            if(this.root.data.equals(data)){  //判断符合的节点是否为根节点
                this.root=this.root.next;    //将根节点之后的内容设置为根节点
            }else{
                this.root.next.delete(root, data);    //删除节点
            }
        }
    }
}
复制代码

 

posted on   阿抗  阅读(180)  评论(0编辑  收藏  举报

编辑推荐:
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
· 现代计算机视觉入门之:什么是图片特征编码
阅读排行:
· 手把手教你在本地部署DeepSeek R1,搭建web-ui ,建议收藏!
· Spring AI + Ollama 实现 deepseek-r1 的API服务和调用
· 数据库服务器 SQL Server 版本升级公告
· C#/.NET/.NET Core技术前沿周刊 | 第 23 期(2025年1.20-1.26)
· 程序员常用高效实用工具推荐,办公效率提升利器!
点击右上角即可分享
微信分享提示