【Leetcode】之Swap Nodes in Pairs
2015-11-14 16:33
645 查看
一.问题描述
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.
二.我的解题思路
这种链表的题一向不难解决,在纸上写写画画往往就知道该怎么求解。我是每两个节点进行一次操作,设立了四个指针。这四个指针分别指向,当前节点上一个节点(pri),当前节点(curr),下一个节点(next),下下个节点(tmp)。测试通过的程序如下:/** * Definition for singly-linked list. * struct ListNode { * int val; * ListNode *next; * ListNode(int x) : val(x), next(NULL) {} * }; */ class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode * curr,* next,* tmp,*res,*pri; if(head==NULL) return NULL; if(head->next==NULL) return head; curr=head;next=curr->next; /*first done*/ tmp=next->next; next->next=curr; curr->next=tmp; res=next; pri=curr; curr=curr->next; while(curr!=NULL){ next=curr->next; if(next==NULL) break; if(next->next!=NULL){ tmp=next->next; next->next=curr; curr->next=tmp; curr=curr->next; pri->next=next; pri=next->next; } else{ pri->next=next; next->next=curr; curr->next=NULL; } } return res; } };
相关文章推荐
- node.js安装教程
- LeetCode(117) Populating Next Right Pointers in Each Node II
- LeetCode(117) Populating Next Right Pointers in Each Node II
- Populating Next Right Pointers in Each Node II
- Populating Next Right Pointers in Each Node
- hadoop namenode启动报Permission denied
- Leetcode Swap Nodes in Pairs
- 使用nvm做nodejs的版本管理
- LeetCode19:Remove Nth Node From End of List
- [leetcode 19] Remove Nth Node From End of List
- LeetCode 24_Swap Nodes in Pairs
- Ubuntu下安装Node.js
- NodeJs端口被占用的情况
- 删除 windows 下 node_modules 过深的目录
- 【leetcode】【24】Swap Nodes in Pairs
- 初识node.js
- node -e "require('nan')" npm 安装 tty.js 时报错 ,解决方法
- 关于机房交换机故障导致HDFS NameNode挂掉的问题
- 一步步学习使用node和express开发web应用(二)——npm介绍,express的引入,路由机制
- Node.js