java代码:单链表的实现

1、代码

package LinkList;public class Linklist {//定义节点,内部类只为其外部类使用//要创建嵌套类的对象,并不需要其外围类的对象,直接使用.nextstatic class ListNode{int val;//数据域ListNode next;//指针,指向下一个结点的位置(java里面是引用数据类型——地址)public ListNode(int val){this.val = val;}}//队首指针和队尾指针ListNode head;ListNode tail;int size;//链表长度//定义链表(初始化链表)public Linklist(){head = null;tail = null;size = 0;}public static void main(String[] args) {//初始化链表Linklist newList = new Linklist();newList.appendIntail(5);newList.appendIntail(7);newList.appendIntail(4);newList.appendIntail(2);newList.printList();newList.appendInHead(30);newList.appendInHead(27);newList.insert(3,9);newList.printList();newList.deleteNode(9);newList.printList();newList.findInNumber(4);newList.findInNumber(1);newList.findInIndex(9);newList.update(11,2);newList.printList();}//增加新元素至表尾public void appendIntail(int number){//创建一个值为number的结点ListNode newNode = new ListNode(number);//链表为空时,申请的结点就是第一个结点也是表尾结点if(tail == null){tail = newNode;head =newNode;}else {//链表不空直接加入表尾tail.next = newNode;tail = newNode;}size++;System.out.println("值为" + number +"的结点成功加入链表!");}//头插法建立单链表public void appendInHead(int number){ListNode newNode = new ListNode(number);if(tail == null){//初试链表为空head = newNode;tail = newNode;System.out.println("头插法成功!");}else {//链表不空,放在首节点之前newNode.next = head;head = newNode;System.out.println("头插法成功!");}}//在position插入值为number的结点public void insert(int position,int number){if(position >size){//插入位置不合法return;}ListNode newNode = new ListNode(number);if(position == 0){//在首节点之前插入newNode.next=head;head = newNode;if(tail == null){//说明新结点是该链表第一个插入的结点tail = newNode;}size++;System.out.println("插入成功!");} else if (position == size){//插入位置在最后一个的后一个,直接加载末尾this.appendIntail(number);System.out.println("插入成功!");}else {//找到要插入位置的前一个位置//从头结点开始遍历,直到找到position-1的位置ListNode pre = head;for(int i = 0;i < position-1;i++){pre = pre.next;}//插入newNode.next=pre.next;pre.next = newNode;size++;System.out.println("插入成功!");}}//打印链表public void printList(){System.out.print("链表:[");ListNode cur = head;while (cur != null){if(cur.next == null){System.out.println(cur.val +"]");cur = cur.next;return;}System.out.print(cur.val + ",");cur = cur.next;}System.out.println(" ");}//按值删除public void deleteNode(int number){//第一个节点是要删除的结点的情况下,直接删除if(head !=null && head.val == number){head = head.next;size--;if(size == 0){//表为空的情况下tail = head;}System.out.println("删除成功,成功删除值为" + number + "的结点");}else {//否则就遍历链表找到值为number的结点的前一个结点ListNode pre = head;ListNode cur = head;//遍历while (cur != null){if(cur.val == number){//要删除的结点是表尾结点,修改tailif (cur == tail){pre.next = null;tail = pre;size--;System.out.println("删除成功,成功删除值为" + number + "的结点");return;}else {//删除的不是表尾结点,正常删除pre.next = cur.next;size--;System.out.println("删除成功,成功删除值为" + number + "的结点");return;}}else {//不是要删除的结点,继续向后滑动遍历pre = cur;cur = cur.next;}}//while结束后还没成功删除,说明没有值为number的结点System.out.println("删除失败,没有该结点");return;}}//按值查找public void findInNumber(int number){ListNode p = head;while (p != null){if(p.val == number){System.out.println("查找成功!");return;}else {p = p.next;}}System.out.println("不存在该数,查找失败!");return;}//按位查找public void findInIndex(int index){if(index > size){System.out.println("查找失败,位置非法!");}else {ListNode cur = head;int i = 0;while (i < index){cur = cur.next;i++;}System.out.println("查找成功,查找到的数值为:" + cur.val);}}//更新值为oldvalue的结点为newValue,并返回更新结点的位置public int update(int oldValue,int newValue){int i = 1;ListNode cur = head;while (cur != null){if(cur.val == oldValue){cur.val = newValue;System.out.println("更新成功!");return i;}else {i++;cur = cur.next;}}System.out.println("更新失败!不存在值为" + oldValue + "的结点");return -1;}}

2、结果

在这里插入图片描述

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

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

相关文章

前端面试题日常练-day90 【Less】

题目 希望这些选择题能够帮助您进行前端面试的准备&#xff0c;答案在文末 在Less中&#xff0c;以下哪种语法适用于定义变量&#xff1f; a) $var b) variable c) #variable d) &variable Less中的Mixin是用来做什么的&#xff1f; a) 定义变量 b) 创建循环 c) 处理函数…

数据建设实践之大数据平台(二)安装zookeeper

安装zookeeper 上传安装包到/opt/software目录并解压 [bigdatanode101 software]$ tar -zxvf apache-zookeeper-3.5.7-bin.tar.gz -C /opt/services/ 重命名文件 [bigdatanode101 services]$ mv apache-zookeeper-3.5.7-bin zookeeper-3.5.7 配置环境变量 export JAVA_H…

GPT-4从0到1搭建一个Agent简介

GPT-4从0到1搭建一个Agent简介 1. 引言 在人工智能领域&#xff0c;Agent是一种能够感知环境并采取行动以实现特定目标的系统。本文将简单介绍如何基于GPT-4搭建一个Agent。 2. Agent的基本原理 Agent的核心是感知-行动循环&#xff08;Perception-Action Loop&#xff09;…

C#与倍福Plc通信——使用仿真软件模拟倍福PLC运行

前言 我们在编写上位机与倍福PLC通信的过程中,有时候我们没有真实的Plc,但是我们又想提前测试与倍福PLC的通信,那么这个时候我们就可以使用倍福的仿真软件模拟PLC,然后我们上位机就可以与仿真PLC进行通信了,下面进行详细介绍: 1、下载并安装倍福PLC编程软件TwinCAT 安…

Elasticsearch集群健康检查与监控

在大数据时代&#xff0c;Elasticsearch作为一款高性能、可扩展的搜索与分析引擎&#xff0c;广泛应用于各种需要快速数据检索和分析的场景中。然而&#xff0c;随着数据量的不断增加和集群规模的扩大&#xff0c;保持Elasticsearch集群的健康状态和高效运行变得尤为重要。本文…

python 如何处理图片 举例说明

Python有很多库可以用于处理图片&#xff0c;常用的有Pillow和OpenCV。 举例说明如下&#xff1a; 使用Pillow库读取图片并显示&#xff1a; from PIL import Image# 打开图片 image Image.open(image.jpg)# 显示图片 image.show()使用Pillow库调整图片大小&#xff1a; f…

关于 LayoutInflater.inflate 的取值结论

根节点是否是 mergeViewGroup rootboolean attachToRoot返回值否notNullfalse返回的是 xml 布局的根节点 View 对象&#xff0c;并且对象上拥有根节点上的布局参数。否notNulltrue返回的是添加了根节点View对象以及布局参数的root对象。否nullfalse返回的是没有布局参数信息的根…

Java中的输入输出

输出到控制台 【基本语法】&#xff1a; System.out.println(msg); // 输出一个字符串, 带换行 System.out.print(msg); // 输出一个字符串, 不带换行 System.out.printf(format, msg); // 格式化输出 println 输出的内容自带 \n, print不带 \n printf 的格式化输出方式和…

面试题: C++11用过哪些特性

面试题&#xff1a; C11用过哪些特性 考察重点&#xff1a; 回答问题的层次学习总结的思路 语法糖 关键字&#xff1a; auto, decltypenullptrfinal, overrideconstexpr 语法&#xff1a; 基于范围的for循环 function函数对象&#xff0c;bind, lambda STL容器 array…

Android TabLayout+ViewPager2如何优雅的实现联动详解

一、介绍 Android开发过程中&#xff0c;我们经常会遇到滑动导航栏的做法&#xff0c;之前的做法就是我们通过ViewGroup来转动&#xff0c;然后通过大量的自定义来完成&#xff0c;将导航栏item与viewpage 滑动&#xff0c;达到业务需求 二、现实方案 通过介绍&#xff0c;我…

机器人前沿--PalmE:An Embodied Multimodal Language Model 具身多模态大(语言)模型

首先解释这篇工作名称Palm-E&#xff0c;发表时间为2023.03&#xff0c;其中的Palm是谷歌内部在2022.04开发的大语言模型&#xff0c;功能类似ChatGPT&#xff0c;只是由于各种原因没有那样火起来&#xff0c;E是Embodied的首字母&#xff0c;翻译过来就是具身多模态大语言模型…

36、快手视频解析API接口,免费好用

1、前言 快手视频解析API接口&#xff0c;这个是RollToolsApi通用系列接口的其中一个&#xff0c;内部包含了1个小接口&#xff0c;解析快手链接&#xff0c;获取视频Mp4下载链接&#xff0c;即可下载视频到本地。 查看接口完整信息&#xff1a;https://www.mxnzp.com/doc/de…

Typora中插入LaTex数学公式的使用

文章目录 Typora中插入LaTex数学公式的使用公式的插入上下标括号和分隔符分数开方省略号矢量和均值积分极限累加、累乘及交集、并集希腊字母特殊字符字体大括号和行标字体 大括号和行标其他命令矩阵方程式序列条件表达式配置行高数组与表格嵌套表格或数组方程组连分式交换图表其…

宠物浮毛克星!最值得买的猫用空气净化器排名

作为用了3年宠物空气净化器的铲屎官来说&#xff0c;为什么铲屎官每到春秋换季就开始疯狂打喷嚏、突然开始全身过敏。其原因是猫毛一到换季就开始疯狂掉毛&#xff0c;相对于可见猫毛&#xff0c;漂浮在空气中的浮毛就是罪灰祸首。微小的浮毛在空气总容易被人体吸入体内&#x…

Qt+ESP32+SQLite 智能大棚

环境简介 硬件环境 ESP32、光照传感器、温湿度传感器、继电器、蜂鸣器 基本工作流程 上位机先运行&#xff0c;下位机启动后尝试连接上位机连接成功后定时上报传感器数据到上位机&#xff0c;上位机将信息进行处理展示判断下位机传感器数据&#xff0c;如果超过设置的阈值&a…

NumPy库学习之arange函数

NumPy库学习之arange函数 一、简介 NumPy是一个开源的科学计算库&#xff0c;用于Python语言。它提供了大量的数学函数来对数组进行操作。arange函数是NumPy库中用来生成一个指定范围的值的数组。 二、语法和参数 arange函数的基本语法如下&#xff1a; numpy.arange(star…

[misc]-流量包-wireshark-icmp

wireshark打开&#xff0c;大部分都是icmp,查看data部分 提取data长度&#xff1a; tshark.exe -r 1.pcapng -T fields -e data.len > length.txt 使用python解析这个文件&#xff0c;剔除异常值&#xff0c;每8个取一个值&#xff0c;得到flag ds [] with open(length.tx…

188家国产大模型:挑战与机遇,未来杀手级AI应用究竟该长什么样子?

未来的杀手级AI应用究竟该长什么样子&#xff1f;这篇文章里&#xff0c;作者梳理了国内外LLMs基础大模型的特征&#xff0c;并于最后发表了自己关于杀手级AI应用的看法和见解&#xff0c;一起来看一下。 摘要&#xff1a; 本文详细列表展示国外18家&#xff0c;国内188家大模…

使用AIOHTTP模块:提高网络请求效率

链接&#xff1a;https://pan.quark.cn/s/c6df12a6efcc​ 本文将介绍如何利用AIOHTTP模块提高网络请求效率&#xff0c;以及如何编写一个异步下载图片的程序&#xff0c;并展示如何通过AIOHTTP和AIO files的异步功能优化Python爬虫程序的读写操作。 00:00 - AIOHTTP模块&…

Ant 风格的路径模式和 MVC 风格的路径模式 是什么

Ant 风格的路径模式和 MVC 风格的路径模式是 Spring 框架中用于匹配 URL 路径的两种模式。它们各有不同的语法和用途&#xff0c;主要用于配置 Spring Security 和 Spring MVC 中的请求映射。 Ant 风格的路径模式 Ant 风格的路径模式使用 Ant 文件路径匹配语法来匹配 URL。常…