数据结构入门之单链表代码实现(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)

大家都在看

  • MySQL 笔记

    情景一数据库概述基本术语DB : 数据库 ( Database )它是根据数据结构组织、存储和管理数据的仓库。它被视为电子档案柜,用户可以对文件中的数据进行添加、删除、修改、查找等…

    数据库 2023年5月24日
    092
  • Spring MVC的生命周期与简单三大组件的简单介绍

    1.说到Spring MVC就会想到它是基于MVC设计模式的思想来设计的: 那么MVC设计模式是什么呢? 下面来介绍一下 MVC 设计模式 MVC是模型(model)-视图(vie…

    数据库 2023年6月6日
    094
  • JUC学习

    如何正确停止线程? 停止线程应该是一种通知协作的方式,比如interrupt,但是它仅仅是通知线程,线程拥有完全的自主权,根据自身业务来判断什么时候停止,因为如果选择立即停止就可能…

    数据库 2023年6月16日
    0102
  • Linux(CentOS)安装Redis保姆级教程

    Linux(CentOs)安装Redis教程 一,下载Redis(两种方式) 1,找到redis官网(https://redis.io/download ) 如果想下载指定版本就去…

    数据库 2023年6月11日
    091
  • python-django框架中使用docker和elasticsearch配合实现搜索功能

    注意:系统环境为Ubuntu18 一、docker安装 0:如果之前有安装过docker使用以下命令卸载: bash;gutter:true; sudo apt-get remov…

    数据库 2023年6月6日
    0208
  • 事务

    事务 *事务的简介 事务是一组操作的集合,这是一个不可分割的工作单元。事务将向整个系统提交或取消操作请求。这些操作只能同时成功和失败。 [En] A transaction is …

    数据库 2023年5月24日
    0114
  • mybatis order by concat用法

    由于项目中用到了一个关联查询,关联的表中都有id字段,在排序时,使用${id},获取值时,一直报 Column ‘id’ in order clause i…

    数据库 2023年6月11日
    082
  • Linux的一些的常用命令

    小杰笔记: 记录一下Linux的一些常见命令: 1:Linux关机与重启的命令: 2:切换目录与查看目录的文件: 3:文件目录的创建与删除: 4:文件的复制 删除与移动: 5:如何…

    数据库 2023年6月6日
    075
  • 折腾 2 年多!我们终于见面了!

    2018年3月,我与张老师就这么在微信上聊了起来,起初我并没有写书的打算,我们之间只是通过讨论、交流的形式聊聊关于出书的方方面面。最终,敌不过张老师超强的专业能力、细致的解说与盛情…

    数据库 2023年6月9日
    0170
  • CentOS7源码安装MySQL

    CentOS7源码安装MySQL 1:安装依赖包 执行:yum -y install ncurses-devel gcc- bzip2- bison 2:升级cmake工具(我用的…

    数据库 2023年6月6日
    083
  • 计算机网络基础

    计算机网络基础 计算机网络的定义和功能 计算机网络是利用通信设备和线路,将分布在地理位置不同的、功能独立的多个计算机系统连接起来,以功能完善的网络软件(网络通信协议及网络操作系统等…

    数据库 2023年6月16日
    084
  • Java处理.tif或.tiff图片

    前言 Java将图片读取到内存用的是ImageIO,默认可以处理的图片格式如下: undefined ImageIO.getWriterFileSuffixes() //此方法返回…

    数据库 2023年6月9日
    080
  • 在Ubuntu系统上安装StoneDB数据库

    今天我会进行StoneDB数据库在Ubuntu 22.04系统下的安装。 严格按照官方文档的步骤操作,看看安装能否成功。 [En] Strictly follow the step…

    数据库 2023年5月24日
    0105
  • Redis进阶(一)

    通过简单的KV数据库理解Redis 分为访问模块,操作模块,索引模块,存储模块 底层数据结构 除了String类型,其他类型都是一个键对应一个集合,键值对的存储结构采用哈希表 哈希…

    数据库 2023年6月16日
    088
  • 【数据库】– MySQL SQL调优笔记(1)

    1.索引 1.1.定义 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。 我们平常所说的索引,如何没有特别的指明,都是B树(多路搜索树,并不…

    数据库 2023年5月24日
    0122
  • kafka学习

    Kafka概述 Kafka是分布式(点对点模式)(发布-订阅模式)消息系统,由Scala 写成, 它主要用于处理流式数据。本质是基于消息队列缓存数据. Kafka对消息保存时根据T…

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