第一步:根据给的有序数组,用尾插法新建一个有序链表。
第二步:通过双指针找到结点应该插入位置的前驱和后继。
第三步:插入该结点。
struct ListNode* insert(int* A, int ALen, int val ) {
    struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));   //新建头结点
    int i = 0;
    head->val = A[0];  //头结点赋值
    struct ListNode* rear = head;  //尾指针指向头结点
    for(i = 1; i < ALen; i++){   //从元素A[1]开始插入
        struct ListNode* p = (struct ListNode*)malloc(sizeof(struct ListNode)); //每个元素都要新建一个结点
        p->val = A[i];  //结点赋值
        rear->next = p;   //两步式尾插法
        rear = p;
    }
    struct ListNode* pre = head;  //为了找到新插入结点的前驱位置
    struct ListNode* q = head->next;   //为了找到新插入结点的后继位置
    while(q != NULL && q->val < val){
        pre = q;     //两指针同步移动
        q = q->next;  //q最多到链尾之后的空结点,pre最多会移到最后一个结点处
    }         
    struct ListNode* s = (struct ListNode*)malloc(sizeof(struct ListNode));  
    s->val = val;  //给要插入的结点赋值
    pre->next = s;   //两步式尾插法
    s->next = q;
    }
    return head;
}