天天看點

LeetCode021 Merge Two Sorted Listss C語言

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 &amp;&amp; !l2)</code>

<code>    </code><code>return</code> <code>l1;</code>

<code>    </code><code>if</code><code>(!l1 &amp;&amp; l2)</code>

<code>    </code><code>return</code> <code>l2;</code>

<code>    </code><code>if</code><code>(!l1 &amp;&amp; !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-&gt;val&lt;l2-&gt;val){</code>

<code>        </code><code>head=l1;</code>

<code>        </code><code>l1=l1-&gt;next;</code>

<code>    </code><code>}</code><code>else</code><code>{</code>

<code>        </code><code>head=l2;</code>

<code>        </code><code>l2=l2-&gt;next;</code>

<code>    </code><code>}</code>

<code>    </code><code>ret=head;</code>

<code>    </code><code>//負責周遊。哪個小就指向哪個,直到有一個周遊完</code>

<code>    </code><code>while</code><code>(l1&amp;&amp;l2){</code>

<code>        </code><code>if</code><code>(l1-&gt;val&lt;l2-&gt;val){</code>

<code>            </code><code>head-&gt;next=l1;</code>

<code>            </code><code>l1=l1-&gt;next;</code>

<code>        </code><code>}</code><code>else</code><code>{</code>

<code>            </code><code>head-&gt;next=l2;</code>

<code>            </code><code>l2=l2-&gt;next;</code>

<code>        </code><code>}</code>

<code>        </code><code>head=head-&gt;next;</code>

<code>    </code><code>//周遊完後看看誰還剩下直接指向剩下的部分</code>

<code>    </code><code>if</code><code>(l1){</code>

<code>        </code><code>head-&gt;next=l1;</code>

<code>    </code><code>if</code><code>(l2){</code>

<code>        </code><code>head-&gt;next=l2;</code>

<code>    </code><code>return</code> <code>ret;</code>

。。。。。。。。。。。。。。。。太笨了。。。。。。。。。。。。。。。。繼續練習吧少年。。。。。。。。。。。。。。。

本文轉自 努力的C 51CTO部落格,原文連結:http://blog.51cto.com/fulin0532/1864639

繼續閱讀