首页 > 代码库 > Leetcode-Swap Nodes in Pairs

Leetcode-Swap Nodes in Pairs

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

For example,
Given 1->2->3->4, you should return the list as 2->1->4->3.

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

Have you met this question in a real interview?
 
Solution:
 1 /** 2  * Definition for singly-linked list. 3  * public class ListNode { 4  *     int val; 5  *     ListNode next; 6  *     ListNode(int x) { 7  *         val = x; 8  *         next = null; 9  *     }10  * }11  */12 public class Solution {13     public ListNode swapPairs(ListNode head) {14         if (head==null || head.next==null) return head;15         ListNode preHead = new ListNode(0);16         preHead.next = head;17         ListNode pre = preHead;18         ListNode cur = head;19 20         while (cur!=null && cur.next!=null){21            ListNode temp = cur.next.next;22            pre.next = cur.next;23            cur.next.next = cur;24            cur.next = temp;25            pre=cur;26            cur = cur.next;27         }28 29         return preHead.next;30     }31 }

 

Leetcode-Swap Nodes in Pairs