Merge Two Sorted Lists
Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists.
入门题目了,严蔚敏的书本好像一开始就介绍了这样的题目,以前死背了好多次,始终背不出来,现在已经不用背了,感觉随时都能写出不比书本差的程序。
本题就是考链表的操作了。
链表的操作是要练出感觉来的。
下面的程序提供到位操作,把链表2直接插入链表1中。
/** * 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) { if (!l2) return l1; if (!l1) return l2; ListNode *h = l1; if (l1->val > l2->val) { ListNode *t = l2->next; l2->next = l1; h = l1 = l2; l2 = t; } while (l1->next && l2) { if (l1->next->val > l2->val) { ListNode *t = l2->next; l2->next = l1->next; l1->next = l2; l2 = t; } l1 = l1->next; } if (l2) l1->next = l2; return h; } };