#24. 两两交换链表中的节点

给定一个链表,两两交换其中相邻的节点,并返回交换后的链表。

你不能只是单纯的改变节点内部的值,而是需要实际的进行节点交换。

 1 class Solution {
 2 public:
 3     ListNode* swapPairs(ListNode* head) {
 4         if(head==nullptr||head->next==nullptr) return head;
 5         ListNode* pre,* cur, * tmp,* res;
 6         res = head->next;
 7         pre = new ListNode(0,head);
 8         tmp = head;
 9         cur = head->next;
10         while(cur!=nullptr&&tmp!=nullptr)
11         {   
12             ListNode* r = tmp->next->next;
13             pre->next = cur;
14             cur->next = tmp;
15             tmp->next = r;
16             pre = tmp;
17             tmp = r;
18             if(tmp)
19             {
20                 cur = tmp->next;
21             }
22         }
23         return res;
24     }
25     
26 };

 

posted @ 2022-12-14 18:03  xiazichengxi  阅读(22)  评论(0)    收藏  举报