將兩個升序連結串列合併為一個新的 升序 連結串列並返回。(新手篇06)

沉默著忍受發表於2020-11-09

將兩個升序連結串列合併為一個新的 升序 連結串列並返回。新連結串列是通過拼接給定的兩個連結串列的所有節點組成的。
示例:

輸入:1->2->4, 1->3->4
輸出:1->1->2->3->4->4

我們可以用遞迴實現這個問題
我這裡要定義一個函式
struct ListNode* mergeTwoLists(struct ListNode* l1, struct ListNode* l2){
//ListNode* l1連結串列l1,ListNode* l2連結串列l2;
if(l1NULL)
return l2;
if(l2
NULL)
return l1; //要考慮連結串列為空的處理辦法
if(l1->valval) //兩個升序連結串列,它們要比較值的大小
{
l1->next= mergeTwoLists( l1->next, l2);
return l1;
}
else
{
l2->next= mergeTwoLists( l1,l2->next);
}
return l2;
}

//main函式呼叫
int main()
{
struct ListNode* a,
struct ListNode* b,
printf(“輸入l1:”)
scanf("%d",ListNodea);
printf(“輸入l2:”)
scanf("%d",ListNode
b);
struct ListNode* c;
struct ListNode* c=ListNode* mergeTwoLists(struct ListNode* a, struct ListNode* b)
printf("%d",ListNode* c);
}

相關文章