天天看点

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

继续阅读