用java简单的实现单链表的基本操作

2023-05-16

此代码仅供参考,如有疑问欢迎评论:

package com.tyxh.link;
//节点类
public class Node {
     protected Node next; //指针域
     protected int data;//数据域
     
     public Node( int data) {
           this. data = data;
     }
     
     //显示此节点
     public void display() {
          System. out.print( data + " ");
     }
}

package com.tyxh.link;
//单链表
public class LinkList {
     public Node first; // 定义一个头结点
     private int pos = 0;// 节点的位置

     public LinkList() {
           this. first = null;
     }

     // 插入一个头节点
     public void addFirstNode( int data) {
          Node node = new Node(data);
          node. next = first;
           first = node;
     }

     // 删除一个头结点,并返回头结点
     public Node deleteFirstNode() {
          Node tempNode = first;
           first = tempNode. next;
           return tempNode;
     }

     // 在任意位置插入节点 在index的后面插入
     public void add(int index, int data) {
          Node node = new Node(data);
          Node current = first;
          Node previous = first;
           while ( pos != index) {
              previous = current;
              current = current. next;
               pos++;
          }
          node. next = current;
          previous. next = node;
           pos = 0;
     }

     // 删除任意位置的节点
     public Node deleteByPos( int index) {
          Node current = first;
          Node previous = first;
           while ( pos != index) {
               pos++;
              previous = current;
              current = current. next;
          }
           if(current == first) {
               first = first. next;
          } else {
               pos = 0;
              previous. next = current. next;
          }
           return current;
     }

     // 根据节点的data删除节点(仅仅删除第一个)
     public Node deleteByData( int data) {
          Node current = first;
          Node previous = first; //记住上一个节点
           while (current. data != data) {
               if (current. next == null) {
                    return null;
              }
              previous = current;
              current = current. next;
          }
           if(current == first) {
               first = first. next;
          } else {
              previous. next = current. next;
          }
           return current;
     }

     // 显示出所有的节点信息
     public void displayAllNodes() {
          Node current = first;
           while (current != null) {
              current.display();
              current = current. next;
          }
          System. out.println();
     }

     // 根据位置查找节点信息
     public Node findByPos( int index) {
          Node current = first;
           if ( pos != index) {
              current = current. next;
               pos++;
          }
           return current;
     }

     // 根据数据查找节点信息
     public Node findByData( int data) {
          Node current = first;
           while (current. data != data) {
               if (current. next == null)
                    return null;
              current = current. next;
          }
           return current;
     }
}

package com.tyxh.link;
//测试类
public class TestLinkList {
     public static void main(String[] args) {
          LinkList linkList = new LinkList();
          linkList.addFirstNode(20);
          linkList.addFirstNode(21);
          linkList.addFirstNode(19);
           //19,21,20
          linkList.add(1, 22); //19,22,21,20
          linkList.add(2, 23); //19,22,23,21,20
          linkList.add(3, 99); //19,22,23,99,21,20
          linkList.displayAllNodes();
//        Node node = linkList.deleteFirstNode();
//        System.out.println("node : " + node.data);
//        linkList.displayAllNodes();
//        node = linkList.deleteByPos(2);
//        System.out.println("node : " + node.data);
//        linkList.displayAllNodes();
//        linkList.deleteFirstNode();
          Node node = linkList.deleteByData(19);
//        Node node = linkList.deleteByPos(0);
          System. out.println( "node : " + node. data);
          linkList.displayAllNodes();
          Node node1 = linkList.findByPos(0);
          System. out.println( "node1: " + node1. data);
          Node node2 = linkList.findByData(22);
          System. out.println( "node2: " + node2. data);
     }
}


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用java简单的实现单链表的基本操作 的相关文章

随机推荐

  • Android 电量监控、关机、重启功能的实现

    本文主要是介绍Android电量监控 关机 重启功能的实现 xff0c 需要具备的条件是手机需要root过 xff0c 才能实现相关操作 1 MainActivity java import java io IOException impo
  • 拓扑排序1图文详解面试常考算法 —— 拓扑排序

    前言 Topological sort 又称 Topological order xff0c 这个名字有点迷惑性 xff0c 因为拓扑排序并不是一个纯粹的排序算法 xff0c 它只是针对某一类图 xff0c 找到一个可以执行的线性顺序 这个
  • Android签名总结

    一 为什么要签名 开发Android 的人这么多 xff0c 完全有可能大家都把类名 xff0c 包名起成了一个同样的名字 xff0c 这时候如何区分 xff1f 签名这时候就是起区分作用的 由于开发商可能通过使用相同的Package Na
  • 消息队列技术介绍

    一 消息队列概述 消息队列中间件是分布式系统中重要的组件 xff0c 主要解决应用耦合 异步消息 流量削锋等问题 实现高性能 高可用 可伸缩和最终一致性架构 是大型分布式系统不可缺少的中间件 目前在生产环境 xff0c 使用较多的消息队列有
  • Ubuntu 循环登录 解决办法

    Ubuntu 经常出现循环登录的情况 但需要根据不同原因 采用不同的解决方案 已知情况有 Xauthority 权限变为root 修改到自己账户权限即可nvidia 显卡驱动问题 卸载重装即可 Xauthority 权限问题 参考Ubunt
  • Kotlin基础(一)android studio中配置Kotlin

    1 何为Kotlin xff1f Kotlin是一门运行在JVM之上的语言 它由Jetbrains创建 xff0c 而Jetbrains则是诸多强大的工具 xff08 如知名的Java IDE IntelliJ IDEA xff09 背后的
  • 关于Ubuntu18.04 root账户登录的问题

    关于Ubuntu18 04 root账户登录的问题 一 Ubuntu 18 04添加root用户登录1 设置root用户2 修改 root profile3 修改 96 etc pam d 96 目录下的 96 gdm autologin
  • Ubuntu下fcitx崩溃,搜狗输入法乱码

    转载 xff1a https www findhao net res 786 预防原文删除 xff0c 侵删 方法 直接重启fcitx即可 xff1a fictx自带的重启 fcitx r 或者执行以下三条 xff1a 获得fcitx的进程
  • KVM虚拟化

    KVM虚拟化 文章目录 KVM虚拟化虚拟化简介 KVMKVM部署CPU虚拟化功能kvm管理界面安装 虚拟化简介 虚拟化 xff1a 在一台计算机上虚拟出多个逻辑的计算机 xff0c 而且每个逻辑计算机它可以是不同的操作系统 虚拟化技术 xf
  • Android系统Camera图片反转的一个问题

    一 问题提出 目前遇到项目问题 xff0c Camera预览图像是反的 xff0c 于是考虑设置180度反转以便正常 通过如下两种方式 xff1a params setRotation 180 java部分 p set CameraPara
  • I2C总线的SDA和SCL

    串行数据线SDA 负责在设备间传输串行数据 串行时钟线SCL 负责产生同步时钟脉冲 SCL SDA是I2C总线的信号线 I2C总线是共享的总线系统 xff0c 因此可以将多个I2C设备连接到该系统上 连接到I2C中总线上的设备既可以用作主设
  • ubuntu18.04输入密码登录不进去一直循环

    我是把ubuntu分辨率调了之后变成这样的 其实这个解决方法我也很无语 自己乱按弄到的 就是在登录的隔壁 xff0c 勾选第二个就可以了QUQ 评论区所知 xff1a 选择这个话 xff0c 会关掉nvidia显卡 选择wayland进入后
  • rhce2

    1 配置chrony时间服务器 xff0c 确保客户端主机能和服务主机同步时间 两台机器 第一台机器作为时间服务器从ntp aliyun com同步时间 xff08 注意包含意外情况 xff0c 如果不能上外网 xff0c 不能从阿里云同步
  • FFmpeg Android编译运行出现 Abort message: 'JniInvocation instance already initialized'

    signal 5 SIGTRAP code 1 TRAP BRKPT fault addr 0x272000000d03 Abort message JniInvocation instance already initialized 把
  • layui图标用法总结

    本文参考官方文档 layui图标使用官方文档 xff0c 建议先看此文章 xff0c 并结合本文的前两个步骤使用即可 1 下载layui js相关文档 xff0c layui js下载 xff0c 下载之后里面的内容如下 xff1a 只需要
  • Eggjs学习系列(一) 使用TypeScript快速入门

    Eggjs学习系列 xff08 一 xff09 使用TypeScript快速入门 Eggjs是一个node的渐近式开发框架 xff0c 用于服务端开发 而 TypeScript 是 JavaScript的超集 xff0c 在兼容 JavaS
  • Golang实现小型CMS内容管理功能(二):前端接入百度ueditor富文本编辑器

    当我们把接口都做好以后 xff0c 我们需要去开发前端界面 添加文章功能里面 xff0c 最重要的就是文章内容部分 xff0c 需要配置上富文本编辑器 xff0c 这样才能给我们的内容增加样式 下载ueditor代码 ueditor已经很久
  • 网络分析中数据包结构(含七层模型)

    七层模型 xff1a 包 Packet 是TCP IP协议通信传输中的数据单位 xff0c 一般也称 数据包 有人说 xff0c 局域网中传输的不是 帧 Frame 吗 xff1f 没错 xff0c 但是TCP IP协议是工作在OSI模型第
  • ubuntu下PyCharm遇到问题

    第三方库没有自动补全功能 xff08 autocomplete xff09 190921补充 xff1a 这个问题就是环境配置的问题当初真是无知 原因 xff1a PyCharm的人工编译环境和程序的运行环境不是同一个 xff08 说的太不
  • 用java简单的实现单链表的基本操作

    此代码仅供参考 xff0c 如有疑问欢迎评论 xff1a package com tyxh link 节点类 public class Node protected Node next 指针域 protected int data 数据域