给定两个有序链表,把这两个链表合并为一个有序链表。比如链表1->3->5->NULL和链表2->4->6->NULL。合并以后为1->2->3->4->5->6->NULL。 方法一:循环迭代方法方法二:递归方法ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode *head = new ListNode(0); ListNode *p = head; while(l1 != NULL && l2 != NULL) { if(l1->val < l2->val) { p->next = l1; l1 = l1->next; } else { p->next = l2; l2 = l2->next; } p = p->next; } if(l1 != NULL) { p->next = l1; } if(l2 != NULL) { p->next = l2; } return head->next; }
ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { if(l1 == NULL) { return l2; } if(l2 == NULL) { return l1; } if(l1->val < l2->val) { l1->next = mergeTwoLists(l1->next,l2); return l1; } else { l2->next = mergeTwoLists(l1,l2->next); return l2; } }
面试中常见链表问题1:合并两个有序链表
最新推荐文章于 2024-05-04 09:47:06 发布