首页 > 代码库 > Leetcode:Swap Nodes in Pairs 链表成对交换节点
Leetcode:Swap Nodes in Pairs 链表成对交换节点
Swap Nodes in Pairs:
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given 1->2->3->4
, you should return the list as 2->1->4->3
.
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
解题分析:
思路很简单,需要注意:
1. 链表第一个节点也可能被修改,存在 链表头节点操作和其余结点操作不统一的情况,我们虚拟一个前置结点指向链表的第一个节点
2. 防止断链,多用暂存结点
class Solution { public: ListNode *swapPairs(ListNode *head) { if (head == nullptr) return nullptr; ListNode* newHead = new ListNode(0); newHead->next = head; ListNode* cur = newHead; while (cur != nullptr && cur->next != nullptr && cur->next->next != nullptr) { ListNode* first = cur->next; ListNode* second = cur->next->next; ListNode* nextNode = second->next; cur->next = second; cur->next->next = first; cur = cur->next->next; cur->next = nextNode; // 防止断链 } return newHead->next; } };
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。