/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
//递归法
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2){
if(NULL==list1&&NULL==list2) return NULL;
if(NULL==list1) return list2;
if(NULL==list2) return list1;
if(list1->val<=list2->val)
{
list1->next= mergeTwoLists(list1->next,list2);
return list1;
}
else
{
list2->next=mergeTwoLists(list1,list2->next);
return list2;
}
}
//暴力法
struct ListNode* mergeTwoLists(struct ListNode* list1, struct ListNode* list2) {
struct ListNode* head = (struct ListNode*)malloc(sizeof(struct ListNode));
struct ListNode* p = head;
while (1)
{
if (list1 == NULL)
{
p->next = list2;
return head->next;
}
if (list2 == NULL)
{
p->next = list1;
return head->next;
}
if (list1->val <= list2->val)
{
p->next = list1;
p = p->next;
list1 = list1->next;
}
else if (list1->val > list2->val)
{
p->next = list2;
p = p->next;
list2 = list2->next;
}
}
}
合并两个有序链表
最新推荐文章于 2024-07-18 13:20:33 发布