栈和队列----向有序的环形单链表中插入新节点

Posted demrystv

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了栈和队列----向有序的环形单链表中插入新节点相关的知识,希望对你有一定的参考价值。

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

  

  一个环形链表从头节点开始不会降序,同时最后的节点指向头节点。给定一个环形单链表的头节点head和一个整数num,生成新节点并将其插入到环形链表中,保证插入后的链表仍然有序。

 

package com.test;

import com.test.ListNode;

/**
 * Created by Demrystv.
 */
public class InsertNewNodeInCircle {

    /*
    1.如果链表为空,那么就直接新建一个节点,返回这个节点
    2. 如果链表不为空,那么就定义两个变量 pre 和 cur,保证新建的节点在pre和cur之间
    3. 当然存在特殊情况,新建的节点比任意一个节点都大 或者  比任意一个节点都小
     */
    public ListNode insertNode(ListNode head, int num){

        ListNode node = new ListNode(num);

        if (head == null){
            node.next = node;
            return node;
        }

        ListNode pre = head;
        ListNode cur = head.next;
        while (cur != null){
            if (pre.val <= num && cur.val >= num){
                break;
            }
            pre = cur;
            cur = cur.next;
        }

        //针对新建的节点比任意一个节点都大 或者  比任意一个节点都小
        pre.next = node;
        node.next = cur;
        return head.val < num ? head : node;

    }


}

 

以上是关于栈和队列----向有序的环形单链表中插入新节点的主要内容,如果未能解决你的问题,请参考以下文章

每日一题 为了工作 2020 0405 第三十四题

[程序员代码面试指南]链表问题-向有序的环形链表插入新节点

栈和队列----合并两个有序的单链表

栈和队列----在单链表中删除指定值的节点

[算法] leetcode单链表相关题目详解

JAVA实现: 使用单链表实现约瑟夫环(约瑟夫问题)