合并有序链表
题目
题意
合并两个已排序的链表。
分析
有个有序链表的合并操作其实就是二路归并,也与归并排序算法的合并操作可以说一模一样,如果时两个无序链表的话,可能有趣点,但有序链表何必就是很常规的操作了。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| /** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* mergeTwoLists(ListNode* l1, ListNode* l2) { ListNode* head = new ListNode(-1); ListNode* p = head; while (l1 != NULL && l2 != NULL) { if (l1->val < l2->val) { p->next = l1; l1 = l1->next; p = p->next; } else { p->next = l2; l2 = l2->next; p = p->next; } } if (l1 != NULL) p->next = l1; else if (l2 != NULL) p->next = l2;
p = head->next; delete head; return p; } };
|
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 yxhlfx@163.com