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

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

  

  一个环形链表从头节点开始不会降序,同时最后的节点指向头节点。给定一个环形单链表的头节点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;

    }


}

 

posted @ 2018-07-25 10:33  Demrystv  阅读(382)  评论(0编辑  收藏  举报