Swap Nodes in Pairs
程序员文章站
2022-03-05 08:10:05
...
Given a linked list, swap every two adjacent nodes and return its head.
You may not modify the values in the list's nodes, only nodes itself may be changed.
Example:
Given1->2->3->4
, you should return the list as2->1->4->3
.
/* 两两交换链表节点
* 1 2 3 4 -> 2 1 4 3
* 方法: 设立头结点避免特判 每次循环完成一组交换 并且维持一个next
* */
class Solution {
public:
ListNode* swapPairs(ListNode* head) {
if(!head) return NULL;
// 问题 第一次进行交换时已经对head进行重新赋值了()
ListNode *pre=new ListNode(0), *p=head, *tmp, *newhead=head;
pre->next = head; // pre为当前要交换节点的前置节点
if(head->next) newhead = head->next;
while(p && p->next){// 节点要有两个时才进行交换
tmp = p->next->next;
pre->next = p->next;
pre->next->next = p;
p->next = tmp;
pre = p;
p = tmp;
}
return newhead;
}
};
上一篇: 如何在Webpack打包的项目中使用Web Worker
下一篇: SpringBoot日志文件配置