這道題是合并兩個(gè)有序的鏈表,返回一個(gè)新的有序的鏈表.題并難度并不大.
大體思路:使用遞歸
步驟:
1.判斷L1,L2是否為空
2.創(chuàng)建一個(gè)頭指針
3.判斷當(dāng)前L1,L2指向的節(jié)點(diǎn)值的大小.根據(jù)結(jié)果,讓頭指針指向小節(jié)點(diǎn),并讓這個(gè)節(jié)點(diǎn)往下走一步,作為遞歸函數(shù)調(diào)用的參數(shù)放入,返回的就是新的兩個(gè)值的比較結(jié)果,則新的比較結(jié)果放入頭結(jié)點(diǎn)的下一個(gè)節(jié)點(diǎn).
4.返回頭結(jié)點(diǎn)
今天先寫到這里,明天試試別的有趣的方法.
/**
* 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;
}