[刷题] 24 Swap Nodes in Paris

要求

  • 给定一个链表,对于每两个相邻的节点,交换其位置

示例

  • 1->2->3->4->NULL
  • 2->1->4->3->NULL

 

实现

 1 struct ListNode {
 2     int val;
 3     ListNode *next;
 4     ListNode(int x) : val(x), next(NULL) {}
 5 };
 6  
 7 class Solution {
 8 public:
 9     ListNode* swapPairs(ListNode* head) {
10         ListNode* dummyHead = new ListNode(0);
11         dummyHead->next = head;
12         
13         ListNode* p = dummyHead;
14         while( p->next && p->next->next ){
15             ListNode* node1 = p->next;
16             ListNode* node2 = node1->next;
17             ListNode* next = node2->next;
18             
19             node2->next = node1;
20             node1->next = next;
21             p->next = node2;
22             
23             p = node1;
24         }
25         
26         ListNode* retNode = dummyHead->next;
27         delete dummyHead;
28         
29         return retNode;
30     }
31 };
View Code

相关

  • 25 Reverse Nodes in k-Group
  • 147 Insertion Sort List
  • 148 Sort List
posted @ 2020-04-06 08:15  cxc1357  阅读(137)  评论(0编辑  收藏  举报