题意:交换链表相邻节点的值
解题思路:
1)链表为空,返回空值;
2)链表只有一个节点,返回头节点;
3)循环:
3.1) 当前节点的下一节点不为空,交换节点值;
3.2) 当前节点的下一节点的下一节点是否为空,不为空,更新当前节点,为空则退出循环。
4)返回头结点。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
public class Solution {
public ListNode swapPairs(ListNode head) {
if(head==null){
return null;
}
if(head.next==null){
return head;
}
ListNode reNode=new ListNode(0);
reNode.next=head;
ListNode preNode=reNode.next;
while(preNode.next!=null){
int temp=preNode.val;
preNode.val=preNode.next.val;
preNode.next.val=temp;
System.out.println("temp="+temp+";preNode.val="+preNode.val);
if(preNode.next.next!=null){
preNode=preNode.next.next;
}
else{
break;
}
}
return reNode.next;
}
}