无环单链表插值

思路:

1.创建一个新链表的虚的头结点**

2.遍历数组,将每个数组中的值创建一个对应的节点

3.注意分为两种特殊的情况情况讨论:情况一:val的值是插在两个节点中间,val是插在链表的末尾

代码:

import java.util.*;

/*
 * public class ListNode {
 *   int val;
 *   ListNode next = null;
 *   public ListNode(int val) {
 *     this.val = val;
 *   }
 * }
 */

public class Solution {
    public ListNode insert (int[] A, int val) {
        //先创建一个新链表的虚的头结点
        ListNode dummynode=new ListNode(-1);
        ListNode cur=dummynode;
        //由于如果需要插入的节点如果插入到链表的最后,那么就需要特殊处理
        //所以分为两种情况:一种是插在两个节点中间,另一种是插在链表的最后
        boolean flag=true;
        //遍历整个数组,将对应的位置的值创建成新的节点,连在链表上
        //如果发现有大于val的节点,就创建一个节点用来放val,再将对应的节点插在该节点之前
        for(int i=0;i<A.length;i++){
            if(A[i]>val&&flag==true){
                ListNode p=new ListNode(val);
                cur.next=p;
                cur=cur.next;
                flag=false;
            }
            ListNode t=new ListNode(A[i]);
            cur.next=t;
            cur=cur.next;
        }
        //特使情况特殊处理:将val的值插在链表的最后一个节点的后面
        if(flag==true){
            ListNode now=new ListNode(val);
            cur.next=now;
            cur=cur.next;
        }
        return dummynode.next;
    }
}