带头单链表有序版

package com.atguigu.linkedlist;/*** @创建人 wdl* @创建时间 2021/3/17* @描述*/
public class SingleLinkedListDemo {public static void main(String[] args) {//进行测试//先创建节点HeroNode hearo1 = new HeroNode(1, "宋江", "及时雨");HeroNode hearo2 = new HeroNode(2, "卢俊义", "玉麒麟");HeroNode hearo3 = new HeroNode(3, "吴用", "智多星");HeroNode hearo4 = new HeroNode(4, "林冲", "及时钉钉雨");//创建一个链表SingleLinkedList singleLinkedList = new SingleLinkedList();
//        //加入
//        singleLinkedList.add(hearo1);
//        singleLinkedList.add(hearo2);
//        singleLinkedList.add(hearo3);
//        singleLinkedList.add(hearo4);//加入按照编号的顺序singleLinkedList.addByOrder(hearo1);singleLinkedList.addByOrder(hearo4);singleLinkedList.addByOrder(hearo2);singleLinkedList.addByOrder(hearo3);//显示一把singleLinkedList.list();}
}//定义SingleLinkedList管理我们的英雄
class SingleLinkedList{//先初始化一个头节点,头节点不要动,不存放具体的数据private HeroNode head=new HeroNode(0,"","");//添加节点到单向链表//思路,当不考虑编号顺序是//1.找到当前链表的最后节点//2.将最后这个节点的next指向新的节点public void add(HeroNode heroNode){//因为head节点不能动,因此我们需要一个辅助遍历tempHeroNode temp=head;//遍历链表,找到最后while(true){//找到链表的最后if(temp.next==null){break;}//如果没有找到最后,将temp后移temp=temp.next;}//当退出while循环时,temp就指向了链表的最后//将最后这个节点的next指向新的节点temp.next=heroNode;}//第二种方式在添加英雄时,根据排名将英雄插入到指定位置// (如果有这个排名,则添加失败,并会给出提示)public void addByOrder(HeroNode heroNode){//因为头节点不能动,因此我们仍然通过一个辅助指针(变量)来帮助找到添加的位置//因为单链表,我们找到的temp是位于添加位置的前一个节点,否则插入不了HeroNode temp=head;boolean flag=false;//flag标志添加的编号是否存在,默认为falsewhile (true){if(temp.next==null){//说明temp已经在链表的最后break;}if(temp.next.no>heroNode.no){//位置找到,就在temp的后面插入break;}else if(temp.next.no==heroNode.no){//说明希望添加的heroNode的编号已经存在flag=true;//说明编号存在break;}temp=temp.next;//后移,遍历当前链表}//判断flag的值if(flag){//不能添加,说明编号存在System.out.println("准备插入的英雄的编号"+heroNode.no+"已经存在了,不能加入");}else {//插入到链表中,temp的后面heroNode.next=temp.next;temp.next=heroNode;}}//显示链表[遍历]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.toString());//将temp后移,一定要小心temp=temp.next;}}}//定义HeroNode,每个HeroNode对象就是一个节点
class HeroNode{public int no;public String name;public String nickname;public HeroNode next;//指向下一个节点//构造器public HeroNode(int no,String name,String nickname){this.no=no;this.name=name;this.nickname=nickname;}//为了显示方法,我们重写toString@Overridepublic String toString() {return "HeroNode{" +"no=" + no +", name='" + name + '\'' +", nickname='" + nickname + '\'' +
//                ", next=" + next +'}';}
}

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

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

相关文章

mybatis简单案例源码详细【注释全面】——Dao层接口(UserMapper.java)

/** * Title: IUserDao.java * Package org.dao * Description: TODO该方法的主要作用: * author A18ccms A18ccms_gmail_com * date 2017-10-5 下午8:59:34 * version V1.0 */ package org.dao;import java.util.Date; import java.util.List; import java.u…

java笔记--关于线程同步(7种同步方式)

转载自 java笔记--关于线程同步(7种同步方式) 为何要使用同步? java允许多线程并发控制,当多个线程同时操作一个可共享的资源变量时(如数据的增删改查), 将会导致数据不准确&#xf…

前后端分离趋势谈

最近已经不止一个人和我提起过vue了,在我的前端印象中,我还停留在smarty渲染模版,jquery做js处理。学了一晚上,对现在这种工程化webpack打包生成html,js,css的生产方式越来越有兴趣了。工作年限摆在这里的好…

mybatis简单案例源码详细【注释全面】——Dao层映射文件(UserMapper.xml)【重要】

<?xml version"1.0" encoding"UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"><mapper namespace"org.dao.UserMapper"><…

from + size must be less than or equal to: [10000] but was [10550]

from size must be less than or equal to: [10000] but was [10550]_绅士jiejie的博客-CSDN博客 以上错误是ElasticSearch分页搜索时出现的&#xff0c;这是因为ES默认支持的最大条数就是10000条&#xff0c;深度分页导致总条数超过10000&#xff0c;就会报这个错。 解决方…

java并发编程之4——Java锁分解锁分段技术

转载自 java并发编程之4——Java锁分解锁分段技术 并发编程的所有问题&#xff0c;最后都转换成了&#xff0c;“有状态bean”的状态的同步与互斥修改问题。而最后提出的解决“有状态bean”的同步与互斥修改问题的方案是为所有修改这个状态的方法都加上锁&#xff0c;这样也就可…

云计算设计模式(五)——计算资源整合模式

合并多个任务或操作成一个单一的计算单元。这种模式可以提高计算资源的利用率&#xff0c;并降低与云托管的应用程序进行计算处理相关的成本和管理开销。 背景和问题 云应用程序频繁执行各种操作。在某些解决方案也可能是有意义的最初遵循的关注点分离的设计原则&#xff0c;并…

stream获取filter

Java集合Stream类filter的使用_黄嘉成的博客-CSDN博客 Java集合Stream类filter的使用 黄嘉成 2018-05-11 11:49:42 242767 收藏 116 分类专栏&#xff1a; Java高级编程 文章标签&#xff1a; java 集合 Stream filter 过滤 版权 Java高级编程 专栏收录该内容 4 篇文章0 订…

MySQL数据库开发的 36 条军规

转载自 MySQL数据库开发的 36 条军规 核心军规 尽量不在数据库做运算 控制单表数据量 纯INT不超过10M条&#xff0c;含Char不超过5M条 保持表身段苗条 平衡范式和冗余 拒绝大SQL&#xff0c;复杂事务&#xff0c;大批量任务 字段类军规 用好数值字段&#xff0c;尽量简化…

mybatis简单案例源码详细【注释全面】——测试层(UserMapperTest.java)

/** * Title: UserMapperTest.java * Package org.test * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-10-5 下午7:51:50 * version V1.0 */ package org.test;import java.io.IOException; import java.io.InputStr…

Visual Studio 2017 RC3支持.NET Core,延迟对Python的支持

Visual Studio 2017第三个候选版本上周发布&#xff0c;解决了之前发现的安装程序的小问题。由于这些问题得到了解决&#xff0c;现在值得关注的就是这次版本中更新了什么内容。&#xff08;版本是发布于1月27日的build 26127.00&#xff09; RC3版本中最值得关注的部分就是对N…

双向链表的(CRUD)

代码实现(CRUD) package com.atguigu.linkedlist;/*** 创建人 wdl* 创建时间 2021/3/19* 描述*/ public class DoubleLinkedListDemo {public static void main(String[] args) {//测试System.out.println("双向链表的测试");HeroNode2 hearo1 new HeroNode2(1, &q…

java读取Resources下文件

java读取Resources下文件_杰子的世界-CSDN博客_java获取resources下的文件 第四种&#xff0c; 读取路径 ResourceBundle bundle ResourceBundle.getBundle("config"); String url bundle.getString("url"); 1 2 该方法默认读取的是resources文件夹下的以…

达到年薪 40W 必需掌握的技术。

转载自 达到年薪 40W 必需掌握的技术。 很多人在问我&#xff0c;程序员如何拿高薪&#xff0c;如何做到年薪40W&#xff0c;其实总结出来还是一句话&#xff0c;你的技术决定你的能力已经薪资。 那么什么样的技术人才才能拿到一份Java行业里面的高薪呢&#xff1f;下面是我…

mybatis简单案例源码详细【注释全面】——Utils层(MybatisUtils.java)

/** * Title: MybatisUtils.java * Package org.util * Description: TODO该方法的主要作用&#xff1a; * author A18ccms A18ccms_gmail_com * date 2017-10-5 下午8:38:14 * version V1.0 */ package org.util;import java.io.IOException; import java.io.InputStrea…

虚拟研讨会:.NET的未来在哪里?

.NET生态系统在过去的一年中发生了很多事情。在几个方面发展非常迅速&#xff1a;Xamari、UWP、.NET Core、.NET native、F#和开源等等。 如果要关注细节&#xff0c;那大的景象难以描绘。因为在每个方面都有新的动作&#xff1a;跨平台、云、移动、Web应用和通用应用。开发人员…

iOS Charles 抓包

iOS Charles 抓包指南 - 从入门到精通_VictorZhang-CSDN博客_charles ios 下载安装包 Download a Free Trial of Charles • Charles Web Debugging Proxy

使用Servlet上传多张图片——访问提示

上传文件&#xff0c;我们在做项目中补课避免的&#xff0c;有时候我们需要上传单张或者单个文件&#xff0c;但是有时候我们就需要上传多个文件或者多张图片了&#xff0c;我们这里以多张&#xff08;4张&#xff09;图片为例&#xff0c;再多也都是一样的概念&#xff0c;接下…