赞
踩
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。
示例:
给定 1->2->3->4
, 你应该返回 2->1->4->3
.
说明:
思路:
递归
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- ListNode* swapPairs(ListNode* head) {
- if(head == NULL || head->next == NULL) return head;
- ListNode* temp = head -> next;
- head -> next = swapPairs(temp -> next);
- temp -> next = head;
- return temp;
- }
- };
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreBlack.png)
循环
- /**
- * Definition for singly-linked list.
- * struct ListNode {
- * int val;
- * ListNode *next;
- * ListNode(int x) : val(x), next(NULL) {}
- * };
- */
- class Solution {
- public:
- ListNode* swapPairs(ListNode* head) {
- ListNode *dummyHead = new ListNode(0);
- dummyHead->next = head;
- ListNode *p = dummyHead;
- while (p->next && p->next->next) {
- ListNode *node1 = p->next;
- ListNode *node2 = node1->next;
- ListNode *next = node2->next;
-
- node2->next = node1;
- node1->next = next;
- p->next = node2;
- p = node1;
- }
- ListNode *ret = dummyHead->next;
- delete dummyHead;
- return ret;
- }
- };
![](https://csdnimg.cn/release/blogv2/dist/pc/img/newCodeMoreBlack.png)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。