没岗位了 Java发了几百个意向就录几十个人
4 2

相关推荐

03-29 14:06
西南大学 Java
/*————danny的常规方法,注意和回文链表进行区别,这个可以直接用两个现有的链表进行构造,因为原有链表不需要保留;                                            而前面的回文链表需要保留原来链表进行对比,所以不能像这题这样操作。*//** * Definition for singly-linked list. * struct ListNode { *     int val; *     struct ListNode *next; * }; */struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {    //(1)如果l1/l2有空的,则直接将另一个链表给返回    if(!l1){        return l2;    }    if(!l2){        return l1;    }    //(2)创建一个头结点并初始化    struct ListNode *head = (struct ListNode*)malloc(sizeof(struct ListNode));    head->next = NULL;  // 防止脏数据    struct ListNode* s = head;  // 使用s进行操作,而不是头结点head     //(3)对以head为头结点的链表进行构造(只是对地址操作,并不是创建大量结点)    while(l1 && l2){        if(l1->val < l2->val){            s->next = l1;            l1 = l1->next;        }        else{            s->next = l2;            l2 = l2->next;        }        s = s->next;  // 因为x最开始指向的是头结点,每次将下一个位置安排好后,将t移到新链表的最后一个位置    }    //(4)如果都有数据的区间结束,l1还有元素,则t后面直接接剩余的值    if(l1){        s->next = l1;    }    else if(l2){        s->next = l2;    }    //(5)将构造好的链表的第一个具体结点返回    return head->next;  }
点赞 评论 收藏
分享
牛客网
牛客企业服务