24. 两两交换链表中的节点
示例:
给定 1->2->3->4
, 你应该返回 2->1->4->3
.
分析:两两递归,每两个节点当一个整体,进行交换,前个合并节点指向下一个合并节点的前一个节点。
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode(int x) { val = x; }
* }
*/
class Solution {
public ListNode swapPairs(ListNode head) {
//如果是null节点或者单个节点直接返回head
if(head==null||head.next==null){
return head;
}
//拿到后节点
ListNode next=head.next;
//把前节点的指针指向下个合并节点的前节点
head.next=swapPairs(next.next);
//节点调换
next.next=head;
//返回调换后的节点
return next;
}
}
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。