LeetCode#24两两交换链表中的节点
题目链接
题面很简单,将所有节点两两交换,我先想到的是使用循环的方式,但是题解给出了更简单的递归写法。使用递归的好处是可以不用考虑两节点交换后后面那个节点的next节点应该连接到哪个节点(如果遍历的话,每次交换的两个节点的后节点的next指针将很难处理,因为后节点也需要进行交换)
附代码:
1 2 3 4 5 6 7 8 9 10 11
| class Solution { public: ListNode* swapPairs(ListNode* head) { if(head == nullptr || head -> next == nullptr) return head; ListNode* node = head -> next; head -> next = swapPairs(node -> next); node -> next = head; return node; } };
|