链表的添加修改删除操作

news2024/9/23 9:32:52

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 + '\'' +
                '}';
    }
}

 

双向链表的添加操作

public void add(HeroNode heroNode) {
        // 因为尾节点不能动,所以设置一个指针节点
        HeroNode temp = last;
        // 新添加节点的前一个节点为temp所在的节点
        HeroNode heroNode1 = new HeroNode(heroNode.no, heroNode.name, temp, null);
        // 进行判断若链表中只有一个元素,则将first指针指向该元素
        if (last == null) {
            first = heroNode1;
        } else {
            // 如果存在元素,就将元素追加到链表后面
            temp.next = heroNode1;
        }
        // 进行指针后移
        last = heroNode1;
    }

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

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

相关文章

AWVS-window版本安装

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。 一、下载 链接:https://pan.baidu.com/s/1GuLCmYBmhVYA2_qBwfjZhw 提取码&#x…

管家婆安装导致电脑蓝屏问题解决方案

安装完管家婆后,电脑蓝屏,重启还是蓝屏,这该怎么办? 导致的原因:因加密狗驱动不适配于Windows10系统,导致电脑蓝屏 修复方案:进入电脑安全模式(怎么进入问度娘)&#…

css奇淫巧计

1.input文本内容替换 -webkit-text-security:通过用形状替换字符,仅影响那些字段不是的typepassword 可选值:none (无),circle (圆圈),disc (圆形),square &a…

【STM32CubeMX】串口通信

前言 本文记录下我学习STM32CubeMX时的流程,方便以后回忆。本章记录串口通信。这里居然有玄学问题,给我整了好久,头都大了。可能也是我能力有限才有的吧,泪目。 目录 串口通信 串口通信 STM32CubeMX中的串口配置,配…

MiniGPT-4引领潮流,GPT-4提前发布图片阅读功能

ChatGPT中国站翻译自medium.com 让我们来看看如何玩Minigpt-4并将其应用到日常生活中。 今年三月,OpenAI 宣布了 GPT-4 的图像识别功能,这意味着 GPT 技术又被提升一个维度。-4 尚未发布给大众使用很长时间,所以终于有人忍不住了!…

由 ChatGPT 团队开发,堪称辅助神器!IntelliJ IDEA 神级插件

什么是Bito? 为什么要使用Bito? 如何安装Bito插件 如何使用Bito插件 什么是Bito? Bito是一款由ChatGPT团队开发的IntelliJ IDEA编辑器插件,旨在提高开发人员的工作效率。此插件强大之处在于它不仅可以帮助开发人员更快地提交…

vulnhub靶机sar

准备工作 下载连接:https://download.vulnhub.com/sar/sar.zip 下载完后解压,然后双击打开,VMware导入OVA 网络环境:DHCP、NAT 信息收集 主机发现 先扫描整个C段 192.168.100.132应该就是我们的目标 端口扫描 扫描目标主机…

3个经典线程同步问题

生产者消费者问题 问题描述 系统中有一组生产者进程和一组消费者进程,生产者进程每次生产一个产品放入缓冲区,消费者进程每次从缓冲区中取出一个产品并使用。生产者、消费者共享一个初始为空、大小为n的缓冲区 伪码描述 semaphore mutex 1;//互斥信…

Zabbix服务端监控目标主机的Web服务(网站的访问延迟)

zabbix服务端和目标主机的部署见上一篇文章: http://t.csdn.cn/XD5Hc Zabbix服务端监控目标主机 服务端启动zabbix服务后,在浏览器上访问:http://IP/zabbix 1.创建主机群主(名字自定义) 2.创建主机 主…

javaEE基于SSh学生选课系统

设计内容1. 搜集相关资料、作出功能需求分析; 2. 各个功能模块的基本功能大体如下: (1). 管理员模块 包括个人中心、专业管理、班级管理、课程管理、教师管理、选课管理。. (2).教师模块 包括个人中心、课程信息、出勤管理、成绩管理。 (3)…

大数据-玩转数据-netcat

Netcat(简称nc)是一款强大的命令行网络工具,用来在两台机器之间建立TCP/UDP连接,并通过标准的输入输出进行数据的读写。 一、Windows 下载安装 netcat(nc)命令 1、netcat(nc)下载地址: https://eternallybored.org/…

《程序员面试金典(第6版)》面试题 16.08. 整数的英语表示

题目描述 给定一个整数,打印该整数的英文描述。 示例 1: 输入: 123输出: “One Hundred Twenty Three” 示例 2: 输入: 12345输出: “Twelve Thousand Three Hundred Forty Five” 示例 3: 输入: 1234567输出: “One Million Two Hundred Thirty Four Thousand…

Kali 更换源(超详细,附国内优质镜像源地址)

1.进入管理员下的控制台。 2. 输入密码后点击“授权”。 3.在控制台内输入下面的内容。 vim /etc/apt/sources.list 4.敲击回车后会进入下面的页面。 5.来到这个页面后的第一部是按键盘上的“i”键,左下角出现“插入”后说明操作正确。 6.使用“#”将原本的源给注释…

武汉大学惯性导航课程合集【2021年秋】1.2 惯性器件的误差和标定

前提平台惯导NED与本地对齐,body系和navigation对齐。地表IMU感受到的是 朝天上的力【0,0,-9.8】和 赤道的【15deg/hr,0,0】或者北极 【0,0,-15deg/hr】或者【15cos纬度,0&#xff0…

「STM32入门」USART串口通信

通信 通信的目的:将一个设备的数据传送到另一个设备,扩展硬件系统 通信协议:制定通信的规则,通信双方按照协议规则进行数据收发 STM32常见的通信协议 本文将介绍USART 概念解释 TX、RX分别是Transmit和Receive的缩写&#xff0c…

一文把 JavaScript 中的 this 聊得明明白白

文章目录 1.this 是什么?2.this的指向2.1 全局上下文的 this 指向2.2 函数(普通函数)上下文中的 this 指向2.3 事件处理程序中的 this 指向2.4 以对象的方式调用时 this 的指向2.5 构造函数中的 this 指向2.6 在 类上下文中 this 的指向。2.7…

开源企业资源规划ERPNext的安装

往常节假日,都是呆在家里看别人堵,这回老苏也出门凑了个热闹,28号早上 7 点半出的门 2 点半往回走的 一天啥也没干,就开了 7 个小时的车去舅舅家蹭了顿饭。还别说,那个田园鸡味道是真不错。 车很久没开了,…

(详解)vue中实现 ‘换肤 / 主题切换’ 功能的三种方式

目录 一、背景 二、实现思路 方法1:定义全局的CSS变量 方法2:切换已定义好的css文件 方法3:切换顶级CSS类名 (需使用css处理器,如sass、less等) 一、背景 在我们开发中我们会遇到像是需要切换程序风格、主题切换啦这种应用场景。 二、实现…

JavaScript通过函数异常处理来输入圆的半径,输出圆的面积的代码

以下为实现通过函数异常处理来输入圆的半径,输出圆的面积的代码和运行截图 目录 前言 一、通过函数异常处理来输入圆的半径,输出圆的面积 1.1 运行流程及思想 1.2 代码段 1.3 JavaScript语句代码 1.4 运行截图 前言 1.若有选择,您可以…

【RPA开发】pymongo 使用教程

实际开发时抓取到的诸多数据如何保存是一个关键问题,MongoDB 相比传统关系型数据库(比如mysql)来说灵活度更高,爬虫时字段格式及数量很可能会随着需求或实际数据的变动而改变,因此 MongoDB 作为数据库来说最合适不过了…