题目:
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.
思路:- 先设置一个头节点,指向给定链表,相邻节点两两交换
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) {
* val = x;
* next = null;
* }
* }
*/
public class Solution {
public ListNode swapPairs(ListNode head) {
ListNode h1 = new ListNode(0);
h1.next = head;
ListNode h2 = h1;
if(head == null || head.next == null)return head;
while(h2.next != null && h2.next.next != null){
ListNode temp = h2.next.next;
h2.next.next = temp.next;
temp.next = h2.next;
h2.next = temp;
h2 = h2.next.next;
}
return h1.next;
}
}