方法一:
递归方法:
package test;
import java.util.*;
class ListNode {
int val;
ListNode next; // 因为每一个节点都是ListNode的一个对象,所以next即下一个节点也是ListNode类型
ListNode(int x) {
val = x;
} //赋值链表的值
}
class Solution {
public ListNode swapPairs(ListNode head) {
if(head == null || head.next == null){
return head;
}
ListNode next = head.next;
head.next = swapPairs(next.next);
next.next = head;
return next;
}
}
public class Main{
public static void main(String[] args) {
ListNode n1 = new ListNode(1);//466
ListNode n2 = new ListNode(3);//467
ListNode n3 = new ListNode(6);//468
ListNode n4 = new ListNode(4);//469
n1.next = n2;
n2.next = n3;
n3.next = n4;
Solution solution = new Solution();
ListNode list1=solution.swapPairs(n1);
while (list1 != null){
System.out.print("->" + list1.val);
list1 = list1.next;
}
}
}
方法二:
非递归方法:
package test;
import java.util.*;
class ListNode {
int val;
ListNode next; // 因为每一个节点都是ListNode的一个对象,所以next即下一个节点也是ListNode类型
ListNode(int x) {
val = x;
} //赋值链表的值
}
class Solution {
public ListNode swapPairs(ListNode head) {
ListNode pre = new ListNode(0);
pre.next = head;
ListNode temp = pre;
while(temp.next != null && temp.next.next != null) {
ListNode start = temp.next;
ListNode end = temp.next.next;
temp.next = end;
start.next = end.next;
end.next = start;
temp = start;
}
return pre.next;
}
}
public class Main{
public static void main(String[] args) {
ListNode n1 = new ListNode(1);//466
ListNode n2 = new ListNode(3);//467
ListNode n3 = new ListNode(6);//468
ListNode n4 = new ListNode(4);//469
n1.next = n2;
n2.next = n3;
n3.next = n4;
Solution solution = new Solution();
ListNode list1=solution.swapPairs(n1);
while (list1 != null){
System.out.print("->" + list1.val);
list1 = list1.next;
}
}
}