数据结构入门之单链表代码实现(java)

1:单链表是:

  • 单链表是一种链式存取的 数据结构 用一组地址任意的 存储单元 存放线性表中的数据元素。
  • 链表中的数据是以结点来表示的,每个结点的构成:元素 ( 数据元素 的映象) + 指针 (指示后继元素 存储 位置),元素就是存储数据的存储单元,指针就是连接每个结点的 地址 数据。 链表中的数据是以结点来表示的,
  • 每个结点的构成:元素 ( 数据元素 的映象) + 指针 (指示后继元素存储位置),元素就是存储数据的存储单元,指针就是连接每个结点的地址数据。 以”结点的序列”表示线性表称作 线性链表 (单链表),单链表是链式存取的结构。 链接方式存储的线性表简称为链表(Linked List)。 ② 链表中结点的逻辑次序和物理次序不一定相同。

2:代码实现:

单链表类属性的定义:

单链表管理类(简单的增删改查):

class LindedHeroNode {
    private HeroNode head = new HeroNode(0, "", "");

    //顺序添加并不能重复
    public void addOrder(HeroNode heroNode) {
        HeroNode temp = head;
        //标识
        boolean flag = false;
        while (true) {
            if (temp.next == null) {
                //已经到最后了
                break;
            }
            if (temp.next.no > heroNode.no) {//找到位置就添加到后面
                break;
            } else if (temp.next.no == heroNode.no) {//相等则不添加
                flag = true;
                break;
            }
            //后移
            temp = temp.next;
        }
        if (flag) {
            System.out.println("有相等的编号");
        } else {
            heroNode.next = temp.next;
            temp.next = heroNode;
        }

    }

    //修改
    public void update(HeroNode heroNode) {
        //先判断链表内部有没有数据
        if (head.next == null) {
            return;
        }
        HeroNode temp = head.next;
        boolean flag = false;
        while (true) {
            if (temp.next == null) {
                break;
            }
            //找到退出
            if (temp.no == heroNode.no) {
                flag = true;
                break;
            }
            //指向下一节点
            temp = temp.next;
        }
        if (flag) {
            temp.Name = heroNode.Name;
            temp.noName = heroNode.noName;
        } else {
            System.out.println("没有找到标识");
        }
    }
    //删除
    public void delect(int no) {
        if (head.next == null) {
            System.out.println("没有数据");
            return;
        }
        HeroNode temp = head;
        boolean flag = false;
        while (true) {
            if (temp.next == null) {
                break;
            }
            if (temp.next.no == no) {
                flag = true;
                break;
            }
            temp = temp.next;
        }
        if (flag) {
            temp.next = temp.next.next;
        } else {
            System.out.println("没有找到");
        }
    }

    //遍历
    public void list() {
        if (head.next == null) {
            System.out.println("没有数据");
            return;
        }
        //头结点不能动 需要一个辅助变量来辅助
        HeroNode temp = head.next;
        while (true) {
            if (temp == null) {
                break;
            }
            System.out.println(temp);
            temp = temp.next;
        }

    }
}

3:测试:

Original: https://www.cnblogs.com/yunjie0930/p/15189644.html
Author: 小杰i
Title: 数据结构入门之单链表代码实现(java)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/576400/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • MDC日志链路设计

    正文 本篇博客主题是MDC(MDC 全称是 Mapped Diagnostic Context,可以粗略的理解成是一个线程安全的存放诊断日志的容器),其具体流程是通过某些标识将整个…

    数据库 2023年6月6日
    0100
  • 【Java代码之美】 — 通过Value获取Map中的键值Key的四种方法

    1.简介 最近在项目中遇到一个EasyExcel中需要取invokeHeadMap中headMap里面的具体列名的集合Index,就遇到了需要从Map从反向通过Value取对应的K…

    数据库 2023年6月6日
    0127
  • gh-ost使用问题记录

    因为 pt-osc 对数据库性能影响较大,且容易造成死锁问题,目前我们在线更改表结构都使用 gh-ost 工具进行修改,这里记录一下使用 gh-ost 过程中的问题,以作记录;首先…

    数据库 2023年6月9日
    082
  • Python第二十天 shutil 模块 zipfile tarfile 模块

    Python第二十天 shutil 模块 zipfile tarfile 模块 注意:压缩打包/解压解包目录和文件使用tarfile模块而不要使用shutil 模块!!! os文件…

    数据库 2023年6月9日
    071
  • [Unity]如何解决带刚体的物体在墙角会穿墙的问题

    问题背景 当一个物体在两个带碰撞体的方块组成的墙角时,只要”挤一挤”就可以从墙角穿墙而过: 原因分析 根据【Unity】Rigidbody.velocity…

    数据库 2023年6月16日
    0174
  • MySQL实战45讲 1,2

    01 | 基础架构:一条SQL查询语句是如何执行的? Server 层 所有跨存储引擎的功能都在这一层实现,比如存储过程、触发器、视图等。 存储引擎层负责数据的存储和提取。其架构模…

    数据库 2023年6月16日
    072
  • flowable 部署流程定义(从Classpath) 和 (根据ui.modeler的 modelId部署)

    /**部署流程定义(根据ui.modeler的 modelId部署) * @param modelId 模型ID * @from fhadmin.cn */ protected S…

    数据库 2023年6月6日
    0116
  • Minio的安装与使用

    Minio的安装与使用 一、Minio介绍 MinIO 是在 Apache License v2.0 下发布的高性能对象存储. 就是说是个存东西的玩意,比较方便配好启动就能访问,也…

    数据库 2023年6月6日
    0107
  • MySQL 数据表操作

    MySQL 数据表操作 数据表操作 每个数据表相当于一个文件,文件分为表结构和表记录。 [En] Each data table is equivalent to a file, …

    数据库 2023年5月24日
    084
  • zabbix的基础使用

    zabbix的基础使用 创建zabbix监控服务 环境 IP 要安装的应用 服务器 192.168.111.135 lamp架构 zabbix server zabbix agen…

    数据库 2023年6月14日
    085
  • LinkedList源码刨析

    404. 抱歉,您访问的资源不存在。 可能是网址有误,或者对应的内容被删除,或者处于私有状态。 代码改变世界,联系邮箱 contact@cnblogs.com 园子的商业化努力-困…

    数据库 2023年6月16日
    084
  • java面试题(2022最新)

    JDK 和 JRE 有什么区别?JRE:Java Runtime Environment(java运行时环境)。即java程序的运行时环境,包含了java虚拟机,java基础类库。…

    数据库 2023年6月16日
    092
  • 线程的同步

    线程同步机制同步块:Java中提供了同步机制,可以有效的防止资源冲突。同步机制使用 synchronized关键字 使用该关键字的代码块称为同步块。同步块 语法: synchron…

    数据库 2023年6月16日
    0126
  • 二进制方式部署K8S(kubernetes)集群(测试、学习环境)-单主双从

    1. 二进制方式部署(一主多从) 1.1 环境准备 角色 IP 组件 master 10.27.134.250 kube-apiserver、kube-controller-man…

    数据库 2023年6月9日
    078
  • 2021长安杯wp

    案件背景 2021年4月25日,上午8点左右,警方接到被害人金某报案,声称自己被敲诈数万元;经询问,昨日金某被嫌疑人诱导果聊,下载了某果聊软件,导致自己的通讯录和果聊视频被嫌疑人获…

    数据库 2023年6月11日
    076
  • Java中的命名规则

    在查找java命名规则时,未在国内相关网站查找到较为完整的文章,这是一篇国外程序开发人员写的java命名规则的文章,原文是英文写的,为了便于阅读,遂翻译为汉语,以便帮助国内开发者有…

    数据库 2023年6月11日
    094
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球