天天看點

leetCode 24. Swap Nodes in Pairs 連結清單

24. Swap Nodes in Pairs

Given a linked list, swap every two adjacent nodes and return its head.

For example,

Given <code>1-&gt;2-&gt;3-&gt;4</code>, you should return the list as <code>2-&gt;1-&gt;4-&gt;3</code>.

Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.

題目大意:

交換每兩個節點的位置。

代碼如下:

1

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

<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>*     ListNode *next;</code>

<code> </code><code>*     ListNode(int x) : val(x), next(NULL) {}</code>

<code> </code><code>* };</code>

<code> </code><code>*/</code>

<code>class</code> <code>Solution {</code>

<code>public</code><code>:</code>

<code>    </code><code>ListNode* swapPairs(ListNode* head) {</code>

<code>        </code><code>ListNode* left,*right,*pre,*p;</code>

<code>        </code><code>pre = NULL;</code><code>//記錄每兩個節點前面的那個節點</code>

<code>        </code><code>p = head;</code>

<code>        </code><code>while</code><code>(p !=NULL &amp;&amp; p-&gt;next != NULL)</code>

<code>        </code><code>{</code>

<code>            </code><code>left = p;</code>

<code>            </code><code>right = p-&gt;next;</code>

<code>            </code> 

<code>            </code><code>left-&gt;next = right-&gt;next;</code>

<code>            </code><code>right-&gt;next = left;</code>

<code>            </code><code>if</code><code>(pre != NULL)</code>

<code>            </code><code>{</code>

<code>                </code><code>pre-&gt;next = right;</code>

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

<code>            </code><code>else</code><code>//連結清單的頭兩個節點交換位置</code>

<code>                </code><code>head = right;</code>

<code>            </code><code>pre = left;</code>

<code>            </code><code>p = left-&gt;next;</code>

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

<code>        </code><code>return</code> <code>head;</code>

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

<code>};</code>

<code></code>

本文轉自313119992 51CTO部落格,原文連結:http://blog.51cto.com/qiaopeng688/1837471

繼續閱讀