向有序环形单链表中插入新节点

一个有序的环形单链表,从头节点开始升序,同时由最后一个结点指回头节点,给定一个环形链表的头节点和一个数值num,创建一个数值为num的新节点,将该节点插入到环形单链表中,要求链表始终有序

这道题就是简单的遍历环形单链表,然后插入新节点,只需要考虑一些特殊情况即可

链表为空:新节点成环返回

链表正常,且新节点插在中间:正常插入

链表正常,但新节点的值会影响链表的有序:将新节点插在最后一个结点和头节点的中间(这里需要注意返回的头节点需要看头节点的值和新节点谁的值小,谁的值小谁作为head返回)

链表的遍历

public static Node insertNum(Node head,int num) {
        Node newNode = new Node(num);
        if(head == null) {
            newNode.next = newNode;
            return newNode;
        }
        Node pre = head;
        Node cur = head.next;
        while(cur != head) {
            if(pre.value = num) {
                // 当前值处于pre和cur之间,插入
                newNode.next = cur;
                pre.next = newNode;
                break;
            }
            // 更新pre和cur
            pre = pre.next;
            cur = cur.next;
        }
        if(cur == head) {
            newNode.next = cur;
            pre.next = newNode;
        }

        return head.value > num ? newNode : head;

    }

代码解析:就是对环形单链表的特殊情况进行处理,当链表为空,新节点成环返回。不为空就循环链表,当循环过程中有满足条件的位置,就将新节点插入该位置,如果循环到头节点都不满足,则将新节点插入到头节点之前。最后对新节点和头节点进行比较,返回值较小的哪一个。

当题目要求我们对链表进行插入、删除等操作的时候,我们一般都会用到当前结点的前一个结点,所以我们一般创建一个新节点来保存当前节点的前一个结点。有时候也会保存当前节点的下一个结点

Original: https://www.cnblogs.com/foldn/p/15920026.html
Author: foldn
Title: 向有序环形单链表中插入新节点

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

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

(0)

大家都在看

  • Spring @ResponseBody 返回中文乱码问题

    今天在使用spring 的时候,发现中文返回的是乱码。 经过研究发现,主要是@ResponseBody 引起的。主要是由于 @ResponseBody 返回字符串结果的时候,使用了…

    Java 2023年5月30日
    058
  • Springboot3.0+spring6.0+JDK17+配置jsp和打war包

    由于某些缘故,公司的产品需要升级,但并不希望花费大量时间重写前端代码(原来的就不是前后分离的)。所以虽然spring和springboot都升级为最新的版本,但是依然还是需要支持j…

    Java 2023年6月9日
    066
  • 推荐几款最好用的MySQL开源客户端,建议收藏!

    一、摘要 众所周知,MYSQL 是目前使得最广泛、最流行的数据库技术之一,为了更方便的管理数据库,市场上出现了大量软件公司和个人开发者研发的客户端工具,比如我们所熟知的比较知名的客…

    Java 2023年6月9日
    079
  • 内存管理(二)之别小看了Tagged-Pointer关键时刻起到大作用

    本文主要研究Tagged Pointer技术,针对该技术需要解决的问题、以及在实际应用中的价值做一些简单的探讨。 如果你想要更进一步,去挖掘Tagged Pointer是如何实现的…

    Java 2023年6月16日
    056
  • SpringMVC

    SpringMVC 注解收集: -@component 组件 -@service service -@controller contro1ler /*代表这个类会被Spring接管…

    Java 2023年6月8日
    070
  • 线上故障处理手册

    摘要 通常处理线上问题的三板斧是 重启-回滚-扩&#x5BB9…

    Java 2023年6月8日
    080
  • docker-compose部署rocketmq

    docker-compose安装: Ubuntu下载docker-compose文件 sudo curl -L https:/…

    Java 2023年6月15日
    057
  • 白嫖CSDN付费资源方法

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

    Java 2023年5月29日
    060
  • manjaro 安装后的基本配置

    第一步:设置官方镜像源 sudo pacman-mirrors -i -c China -m rank # 输入以上命令后会有弹出框,选择一个国内镜像(推荐 https://mir…

    Java 2023年6月6日
    065
  • 实现多线程大的三种方式,超级简单的教程

    一。实现多线程的第一种方式 1.继承Thread类 2.启用这个线程 二。实现多线程的第二种方式 1. 实现Runnable接口 2.启用这个线程 三。实现多线程的第三种方式(注意…

    Java 2023年6月9日
    061
  • 机器学习(5)特征值的处理总结和缺失值的处理

    数值型数据处理的方式:1,归一化 2,标准化 3,缺失值处理(pandas处理) 类别型数据:on-hot编码 时间类型数据:时间切分 posted @2018-11-19 16:…

    Java 2023年6月8日
    077
  • 和朱晔一起复习Java并发(二):队列

    和朱晔一起复习Java并发(二):队列 老样子,我们还是从一些例子开始慢慢熟悉各种并发队列。以看小说看故事的心态来学习不会显得那么枯燥而且更容易记忆深刻。 阻塞队列的等待? 阻塞队…

    Java 2023年5月29日
    082
  • VMware 虚拟机安装CentOS镜像超详细步骤 (含下载地址)

    CentOS目前官网提供的下载版本有6、7、8,最新的版本为8,不过个人推荐CentOS 7 的版本,因为相比较于最新版本,版本7更加地稳定。而相比于版本6,版本7新增了很多的功能…

    Java 2023年6月6日
    077
  • SpringBoot + Spring Cloud Consul 服务注册和发现

    什么是Consul Consul 是 HashiCorp 公司推出的开源工具,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更&#822…

    Java 2023年5月30日
    072
  • 组合问题看透回溯法

    通过组合问题看透回溯法 前言 已经好久没有更新了🤣,从今天开始要保证每周的更新频率了(立个flag,应该能够想到打脸会来的很快😂),今天给大家分享一道 LeetCode算法题,题目…

    Java 2023年6月8日
    066
  • 【转】【数学】矩阵的旋转

    1.简介 计算机图形学中的应用非常广泛的变换是一种称为仿射变换的特殊变换,在仿射变换中的基本变换包括平移、旋转、缩放、剪切这几种。本文以及接下来的几篇文章重点介绍一下关于旋转的变换…

    Java 2023年5月29日
    076
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球