024 Swap Nodes in Pairs 交换相邻结点
给定一个链表,对每两个相邻的结点作交换并返回头节点。
例如:
给定 1->2->3->4,你应该返回 2->1->4->3。
你的算法应该只使用额外的常数空间。不要修改列表中的值,只有节点本身可以更改。
详见:https://leetcode.com/problems/swap-nodes-in-pairs/description/
实现语言:Java
方法一:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode swapPairs(ListNode head) { if(head==null){ return null; } ListNode dummy=new ListNode(-1); ListNode pre=dummy; dummy.next=head; while(pre.next!=null&&pre.next.next!=null){ ListNode last=pre.next.next; pre.next.next=last.next; last.next=pre.next; pre.next=last; pre=last.next; } return dummy.next; } }
方法二:
/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * ListNode(int x) { val = x; } * } */ class Solution { public ListNode swapPairs(ListNode head) { if(head==null||head.next==null){ return head; } ListNode tmp=head.next; head.next=swapPairs(tmp.next); tmp.next=head; return tmp; } }
参考:http://www.cnblogs.com/grandyang/p/4441680.html