给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。
/*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val = val; }* ListNode(int val, ListNode next) { this.val = val; this.next = next; }* }*/
class Solution {public ListNode swapPairs(ListNode head) {if (head==null || head.next==null) return head;ListNode pre = head;ListNode cur = pre.next;head = cur;ListNode t = pre;while(pre != null && pre.next != null){ //奇数偶数条件不同pre.next = cur.next;cur.next = pre;t = pre;pre = pre.next;if(pre != null)cur = pre.next;if(pre != null && cur != null) //奇数偶数条件不同t.next = cur;}return head;}
}
奇/偶数链表长度需要分别讨论。