1
<code>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.</code>
題意:合并兩個有序單連結清單,合并後的仍然是有序的。。。。。。。。。。。。。。。。。。。
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
36
37
38
39
40
41
42
43
44
45
46
47
<code>/**</code>
<code> </code><code>* Definition for singly-linked list.</code>
<code> </code><code>* struct ListNode {</code>
<code> </code><code>* int val;</code>
<code> </code><code>* struct ListNode *next;</code>
<code> </code><code>* };</code>
<code> </code><code>*/</code>
<code>struct</code> <code>ListNode* mergeTwoLists(</code><code>struct</code> <code>ListNode* l1, </code><code>struct</code> <code>ListNode* l2) {</code>
<code> </code><code>//首先判斷有沒有空連結清單的情況。。。。。</code>
<code> </code><code>if</code><code>(l1 && !l2)</code>
<code> </code><code>return</code> <code>l1;</code>
<code> </code><code>if</code><code>(!l1 && l2)</code>
<code> </code><code>return</code> <code>l2;</code>
<code> </code><code>if</code><code>(!l1 && !l2)</code>
<code> </code><code>return</code> <code>NULL;</code>
<code> </code><code>//還是和之前的002題要儲存新連結清單頭,中間節點head負責周遊</code>
<code> </code><code>struct</code> <code>ListNode* head;</code>
<code> </code><code>struct</code> <code>ListNode* ret;</code>
<code> </code><code>//找到新連結清單的頭</code>
<code> </code><code>if</code><code>(l1->val<l2->val){</code>
<code> </code><code>head=l1;</code>
<code> </code><code>l1=l1->next;</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>head=l2;</code>
<code> </code><code>l2=l2->next;</code>
<code> </code><code>}</code>
<code> </code><code>ret=head;</code>
<code> </code><code>//負責周遊。哪個小就指向哪個,直到有一個周遊完</code>
<code> </code><code>while</code><code>(l1&&l2){</code>
<code> </code><code>if</code><code>(l1->val<l2->val){</code>
<code> </code><code>head->next=l1;</code>
<code> </code><code>l1=l1->next;</code>
<code> </code><code>}</code><code>else</code><code>{</code>
<code> </code><code>head->next=l2;</code>
<code> </code><code>l2=l2->next;</code>
<code> </code><code>}</code>
<code> </code><code>head=head->next;</code>
<code> </code><code>//周遊完後看看誰還剩下直接指向剩下的部分</code>
<code> </code><code>if</code><code>(l1){</code>
<code> </code><code>head->next=l1;</code>
<code> </code><code>if</code><code>(l2){</code>
<code> </code><code>head->next=l2;</code>
<code> </code><code>return</code> <code>ret;</code>
。。。。。。。。。。。。。。。。太笨了。。。。。。。。。。。。。。。。繼續練習吧少年。。。。。。。。。。。。。。。
本文轉自 努力的C 51CTO部落格,原文連結:http://blog.51cto.com/fulin0532/1864639