這道題是合并兩個有序的鏈表,返回一個新的有序的鏈表.題并難度并不大.
大體思路:使用遞歸
步驟:
1.判斷L1,L2是否為空
2.創建一個頭指針
3.判斷當前L1,L2指向的節點值的大小.根據結果,讓頭指針指向小節點,并讓這個節點往下走一步,作為遞歸函數調用的參數放入,返回的就是新的兩個值的比較結果,則新的比較結果放入頭結點的下一個節點.
4.返回頭結點
今天先寫到這里,明天試試別的有趣的方法.
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2) {
struct ListNode *head = NULL;
if(l1 == NULL)
{
return l2;
}
if(l2 == NULL)
{
return l1;
}
if(l1->val <= l2->val)
{
head = l1;
head->next = mergeTwoLists(l1->next,l2);
}
else
{
head = l2;
head->next = mergeTwoLists(l1,l2->next);
}
return head;
}