#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 @   xiazichengxi  阅读(18)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 终于写完轮子一部分:tcp代理 了,记录一下
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示
主题色彩