栈和队列----向有序的环形单链表中插入新节点
向有序的环形单链表中插入新节点
一个环形链表从头节点开始不会降序,同时最后的节点指向头节点。给定一个环形单链表的头节点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; } }