环形链表插值

有一个整数val,如何在节点值有序的环形链表中插入一个节点值为val的节点,并且保证这个环形单链表依然有序。

给定链表的信息,及元素的值A及对应的nxt指向的元素编号同时给定val,请构造出这个环形链表,并插入该值。

测试样例:
[1,3,4,5,7],[1,2,3,4,0],2
返回:{1,2,3,4,5,7}
package lianbiao;

public class huanxinglianbiao {

	public static void main(String[] args) {
           int[] A=new int[]{4,8,9};
           int[] nxt=new int[]{1,2,0};
           int val=3;
          ListNode a= huanxinglianbiao.insert(A, nxt, val);
           while(a!=null){
        	   System.out.println(a.val);
        	   a=a.next;
           }
	}
     public static class ListNode{
    	 int val;
    	 ListNode next=null;
    	  ListNode(int val) {
		        this.val=val;
    	 }
     }
     
     public  static ListNode insert(int[] A, int[] nxt, int val) {
         // write code here
    	  if(A== null || A.length == 0){
              ListNode t= new ListNode(val);
              return t;
               
          }
           
           
           
      ListNode head = new ListNode(A[0]);
      ListNode r=head;
      ListNode p;
      for(int i=0;i<nxt.length-1;i++)
      {
          p=new ListNode(A[nxt[i]]);
          r.next=p;
          r=p;
      } 
          ListNode pos = head;
          ListNode pas = head.next;
          while(pas!=null){
              if(val >=pos.val&&val<= pas.val)
                  break;
              pos =pas;
              pas = pas.next;
          }
          if(val<head.val){//这里判断的原因是判断val小于所有值
        	  ListNode t= new ListNode(val);
        	  t.next=head;
        	  return t;
          }
          ListNode t= new ListNode(val);
          t.next =pas;
          pos.next=t;
          if(val<head.val)//这里的判断只是前提是val>=最小值
              return t;
          else
              return head;
     }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值