题目地址:Swap Nodes in Pairs
描述:
Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list’s nodes, only nodes itself may be changed.
Example:
Given 1->2->3->4, you should return the list as 2->1->4->3.
大意:给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。
import java.util.List;
public class SwapPairs {
public static void main(String[] args) {
ListNode node = new ListNode(1);
ListNode node1 = new ListNode(2);
ListNode node2 = new ListNode(3);
ListNode node3 = new ListNode(4);
ListNode node4 = new ListNode(5);
ListNode node5 = new ListNode(6);
node.next = node1;
node1.next = node2;
node2.next = node3;
node3.next = node4;
node4.next = node5;
ListNode node6 = swapPairs(node);
System.out.println(node6);
}
public static class ListNode {
int val;
ListNode next;
ListNode(int x) { val = x; }
}
public static ListNode swapPairs(ListNode head) {
//在最外面套上一层
ListNode node = new ListNode(0);
node.next =head.next;
ListNode temp =head;
while (head != null && head.next != null) {
//交换位置
ListNode next = head.next;
ListNode douleNext = next.next;
head.next = douleNext;
next.next = head;
//将上一轮的暂存地址指向当前的第一个对象。
temp.next = next;
//将一轮循环后的最后的对象地址暂存,用来指向下一轮的起始对象。
temp = head;
head = douleNext;
}
return node.next;
}
}