单向带头链表的添加修改删除操作

news2024/11/25 11:03:47

public class HeroNodeDemo {
    public static void main(String[] args) {
        HeroNode hero1 = new HeroNode(1, "松江");
        HeroNode hero2 = new HeroNode(2, "武松");
        HeroNode hero3 = new HeroNode(3, "及时雨");
        HeroNode hero4 = new HeroNode(4, "吴用");
        HeroNode hero5 = new HeroNode(4, "常毅");
        SingledList singledList = new SingledList();
        singledList.add(hero1);
        singledList.add(hero2);
        singledList.add(hero3);
        singledList.add(hero4);
        singledList.delete(3);
        singledList.show();
    }


}
/**
 * 创建一个管理节点的类
 */
class SingledList {
    /**
     *  初始化一个头节点,头节点不能储有效数据,因为头节点可以帮助我们确定节点的初始位置
     *  因此头节点不能动
     */
    HeroNode head = new HeroNode(0, "");

    /**
     * 定义一个用于添加节点的方法
     * @param heroNode
     */
    public void add(HeroNode heroNode) {
        // 因为头节点不能动,所以设置一个指针节点
        HeroNode temp = head;
        // 使用循环,遍历到最后一个节点
        while (true) {
            if (temp.next == null) {
                break;
            }
            temp = temp.next;
        }
        temp.next = heroNode;
    }

    /**
     * 定义一个用于修改节点的方法,根据节点的编号进行修改,即节点编号不可更改。
     */
    public void update(HeroNode heroNode) {
        // 定义一个辅助节点
        HeroNode temp = head;
        // 进行链表是否为空判断
        if (head.next == null) {
            System.out.println("链表为空");
            return;
        }
        // 表示节点编号是否被找到
        boolean flag = false;
        // 使用循环去找节点编号
        while (true) {
            if (temp.no == heroNode.no) {
                flag = true;
                break;
            }
            if (temp.next == null) {
                break;
            }
            temp = temp.next;
        }
        // 如果找到节点,就去修改值
        if (flag) {
            temp.name = heroNode.name;
        } else {
            System.out.println("输入有误");
        }
    }

    /**
     * 遍历节点的方法
     */
    public void show() {
        // 通过头节点判断链表是否为空
        HeroNode temp = head;
        while (true) {
            if (temp.next == null) {
                break;
            }
            // 每次输出确保是可以进行输出的
            HeroNode heroInfo = temp.next;
            System.out.println(heroInfo);
            temp = temp.next;
        }
    }

    /**
     * 根据节点的编号删除对应的节点
     * @param no
     */
    public void delete(int no) {
        HeroNode temp = head;
        while (true) {
            if (temp.next == null) {
                System.out.println("要删除的节点不存在");
                break;
            }
            if (temp.next.no == no) {
                temp.next = temp.next.next;
                break;
            }
            temp = temp.next;

        }
    }
}

/**
 * 每个类实例就是一个节点
 */
class HeroNode {
    public int no;
    public String name;
    public HeroNode next;
    public HeroNode(int no, String name) {
        this.no = no;
        this.name = name;
    }

    @Override
    public String toString() {
        return "HeroNode{" +
                "no=" + no +
                ", name='" + name + '\'' +
                '}';
    }
}

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/478323.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

prometheus实战之一:用ansible部署

欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于《prometheus实战》 《prometheus实战》是欣宸原创的系列文章,旨在通过实战操作来熟悉和掌握prometheus常规技能 本篇概览 本文是《promet…

spring 容器结构/机制debug分析--Spring 学习的核心内容和几个重要概念--IOC 的开发模式--综合解图

目录 Spring Spring 学习的核心内容 解读上图: Spring 几个重要概念 ● 传统的开发模式 解读上图 ● IOC 的开发模式 解读上图 代码示例—入门 xml代码 注意事项和细节 1、说明 2、解释一下类加载路径 3、debug 看看 spring 容器结构/机制 综合解图 Spring Spr…

使用SPY++查看窗口信息去分析C++客户端UI软件问题

目录 1、使用SPY查看窗口的信息 2、使用SPY查看某些软件UI窗口用什么UI组件实现的 2.1、查看海康视频监控客户端安装包程序 2.2、查看华为协同办公软件WeLink 2.3、查看字节协同办公软件飞书 2.4、查看最新版本的Chrome浏览器 2.5、查看小鱼易连视频会议客户端软件 2.6…

STM32H7 DMA

CubeMX配置 发送调用: 发送速度确实挺快的。 接收: HAL_UART_Receive_DMA(&huart1,Rxbuffer,sizeof(Rxbuffer)); 这个函数开启DMA接收,将收到的数据存放到Rxbuffer数组中去,当接收到了sizeof(Rxbuffer)个数据就会回调DMA1_Stream0_IRQHandler函数…

Linux-基本指令

文章目录 Centos用户新增及删除新增删除 两个理论概念管理贯穿 ls指令文件的操作-l (列出详细信息)-a(显示所有的文件,包括隐藏文件)-F(在每个文件名后附上一个字符以说明该文件的类型)-d(将目录象文件一样…

CTF权威指南 笔记 -第二章二进制文件-2.1-汇编原理

目录 编译原理 GCC编译 四个阶段 (1)预处理阶段 (2)编译阶段 (3)汇编阶段 (4)链接阶段 预处理阶段 编译阶段 汇遍阶段 链接阶段 C语言的生命是从 源文件开始 的 每条C语言都必须要给翻译成 一系列的低级语言 最后 按照可执行文件格式打包 并且作为二进制文件保存起来…

【深入浅出Spring原理及实战】「缓存Cache开发系列」带你深入分析Spring所提供的缓存Cache功能的开发实战指南

带你深入分析Spring所提供的缓存Cache功能的开发实战指南 CacheManager管理器的扩展支持缓存技术类型与CacheManger缓存依赖application配置缓存注解EnableCachingCacheableCachePutCacheEvictCacheConfig SpEL上下文数据注意 SpEL提供了多种运算符 不同Cache的实现机制Concurr…

快速入门微服务保护框架Sentinel

文章目录 一、Sentinel1.1 雪崩问题1.1.1 介绍1.1.2 解决方案 1.2 初识Sentinel1.3 sentinel下载和整合1.4 流量控制1.4.1 簇点链路1.4.2 Sentinel簇点链路设置1.4.3 流控规则1.4.4 热点参数限流1.4.5 隔离和降级1.4.6 授权规则 一、Sentinel 1.1 雪崩问题 1.1.1 介绍 雪崩问…

掌握了这些,才算真正了解C语言数组

也许你认为,C语言中的数组非常好理解,就是把一组相同类型的元素存储在同一块空间里。但是你可能并没有真正理解数组的本质,不信的话请回答一下下面的几个小问题,如果你能非常清晰的回答这些问题,那么你对C语言中的数组…

TF-IDF (BigData, Data Mining)

TF-IDF(term frequency–inverse document frequency)是一种用于信息检索与数据挖掘的常用加权技术。 TF是词频(Term Frequency), IDF是逆文本频率指数(Inverse Document Frequency)。 简介 TF-IDF是一种统计方法,用以评估一字词…

【国际象棋】棋盘游戏-微信小程序开发流程详解

与中国象棋类似的,还有国际象棋,知道有人爱玩,于是凭着好奇心,网上研究了一下,跟中国象棋有相似之处,玩法是有些许不一样,不知道象棋最早出于谁之手呢,抽空做一做,最终完…

倾斜摄影超大场景的三维模型的顶层合并,提升模型在WEB三维展示效果

倾斜摄影超大场景的三维模型的顶层合并,提升模型在WEB三维展示效果 倾斜摄影超大场景的三维模型的顶层合并后,可以采取以下措施来提升模型在WEB三维展示效果: 1、优化模型数据:对于倾斜摄影超大场景的三维模型,需要进…

网络安全:namp扫描工具

-sP可以扫描一个网段ip以及状态和基本信息,10.1.1.2-3就是扫描2和3这两个ip的主机 -p可以扫描指定ip对应主机的端口号,可以是一个范围 nmap简单扫描:nmap 地址 检查地址是否在线以及open的端口号 在端口开放,不一定可以与对方正常…

数据库之事务隔离级别详解

事务隔离级别详解 一、事务的四大特性(ACID)1. 原子性(atomicity):2. 一致性(consistency):3. 隔离性(isolation):4. 持久性(durability): 二、事务的四种隔离级别1. 读未提交(Read uncommitted)&#xff1…

WSL怎么使用本机进行代理联网

文章目录 WSL怎么使用本机代理进行联网问题来源设置v2rayN设置wsl总结参考 WSL怎么使用本机代理进行联网 问题来源 使用WSL克隆github的代码网速很慢,无响应,导致项目无法下载,真的愁人。就想到为WSL设置xx上网,是否就会好很多。…

Photoshop如何使用文字之实例演示?

文章目录 0.引言1.给图像素材添加透明水印2.创建路径文字3.创建每日一签海报4.给图像添加复杂水印5.制作个人简历模板 0.引言 因科研等多场景需要进行绘图处理,笔者对PS进行了学习,本文通过《Photoshop2021入门教程》及其配套素材结合网上相关资料进行学…

React | React组件化开发

✨ 个人主页:CoderHing 🖥️ React .js专栏:React .js React组件化开发 🙋‍♂️ 个人简介:一个不甘平庸的平凡人🍬 💫 系列专栏:吊打面试官系列 16天学会Vue 11天学会React Node…

不良条件视觉感知专栏(一)任务前言

前言 随着深度学习的流行,CNN的强大特征学习能力给计算机视觉领域带来了巨大的提升。2D/3D目标检测、语义分割是常见的视觉感知任务,本专栏我们将围绕着它们展开阐述。 本教程禁止转载。同时,本教程来自知识星球【CV技术指南】更多技术教程&…

Photoshop如何使用图像调色之实例演示?

文章目录 0.引言1.将一张偏冷调的图像调整成暖调2.将图像调整成不同季节色彩倾向3.变换花朵的颜色4.创建人像轮廓风景5.修饰蓝天白云6.调换花草颜色 0.引言 因科研等多场景需要进行绘图处理,笔者对PS进行了学习,本文通过《Photoshop2021入门教程》及其配…