环形链表插值

来源:互联网 发布:大圣数据 同盾科技 编辑:程序博客网 时间:2024/05/15 23:48

有一个整数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;     }}


0 0
原创粉丝点击