leetcode Swap Nodes in Pairs
2016-09-05 16:59
381 查看
两两交换节点,如下
Given
you should return the list as
我的思路是每次处理2个,即1和2交换完后,再对3和4操作。
注意点:如果3和4交换了,那么此时1应该指向4而不是3,即要加入plast
可能在末尾仅剩1个,即无需再交换,需要加if(pright==NULL) break;
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head) {
struct ListNode *pleft,*pright,*new_head,*plast;
if(head==NULL||head->next==NULL) //若无节点或仅一个节点,直接返回
return head;
pleft=head; //左节点
new_head=pleft->next; //新头节点一定是左节点的下一个
plast=NULL; //刚开始没有上一个节点,置为NULL
while(pleft!=NULL)
{
pright=pleft->next; //右节点
if(pright==NULL) //如果右节点为空,说明到尾了,退出
break;
//否则开始交换操作
if(plast!=NULL)
plast->next=pright; //如果发生交换,那么上一节点一定会指向右节点
pleft->next=pright->next; //左节点指向右节点的下一个
pright->next=pleft; //右节点指向左节点
//交换操作结束
plast=pleft; //设置上一节点
pleft=pleft->next; //开始处理后面2个
}
return new_head;
}
Given
1->2->3->4,
you should return the list as
2->1->4->3.
我的思路是每次处理2个,即1和2交换完后,再对3和4操作。
注意点:如果3和4交换了,那么此时1应该指向4而不是3,即要加入plast
可能在末尾仅剩1个,即无需再交换,需要加if(pright==NULL) break;
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* swapPairs(struct ListNode* head) {
struct ListNode *pleft,*pright,*new_head,*plast;
if(head==NULL||head->next==NULL) //若无节点或仅一个节点,直接返回
return head;
pleft=head; //左节点
new_head=pleft->next; //新头节点一定是左节点的下一个
plast=NULL; //刚开始没有上一个节点,置为NULL
while(pleft!=NULL)
{
pright=pleft->next; //右节点
if(pright==NULL) //如果右节点为空,说明到尾了,退出
break;
//否则开始交换操作
if(plast!=NULL)
plast->next=pright; //如果发生交换,那么上一节点一定会指向右节点
pleft->next=pright->next; //左节点指向右节点的下一个
pright->next=pleft; //右节点指向左节点
//交换操作结束
plast=pleft; //设置上一节点
pleft=pleft->next; //开始处理后面2个
}
return new_head;
}
相关文章推荐
- [leetcode刷题系列]Swap Nodes in Pairs
- [leetcode]Swap Nodes in Pairs
- [LeetCode] Swap Nodes in Pairs
- [LeetCode] Swap Nodes in Pairs、Reverse Nodes in k-Group、Rotate List
- leetcode -- Swap Nodes in Pairs
- LeetCode: Swap Nodes in Pairs
- LeetCode_Swap Nodes in Pairs
- LeetCode:Swap Nodes in Pairs
- leetcode 49: Swap Nodes in Pairs
- leetcode之Swap Nodes in Pairs
- LeetCode-Swap Nodes in Pairs
- LeetCode : Swap Nodes in Pairs
- [Leetcode] Swap Nodes in Pairs
- leetcode 49: Swap Nodes in Pairs
- [LeetCode] Swap Nodes in Pairs 解题报告
- LeetCode Online Judge 题目C# 练习 - Swap Nodes in Pairs
- 【LeetCode with Python】 Swap Nodes in Pairs
- leetcode 14: Swap Nodes in Pairs
- leetcode—Swap Nodes in Pairs
- LeetCode - Swap Nodes in Pairs