eetcode_c++:链表:Swap Nodes in Pairs(024)
2016-07-15 20:15
435 查看
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.
//每一对节点交换
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.
//每一对节点交换
算法
O(N)#include <iostream> #include <vector> #include<cmath> #include <algorithm> using namespace std; struct ListNode{ int val; ListNode* next; ListNode(int x):val(x),next(NULL){} }; //leetcode------------------- class Solution { public: ListNode* swapPairs(ListNode* head) { ListNode* dummy=new ListNode(-1); dummy->next=head; ListNode *preNode=dummy,*curNode=head; int cnt=1; while(curNode && curNode->next){ preNode->next=curNode->next; curNode->next=preNode->next->next; preNode->next->next=curNode; // go over two nodes preNode=curNode; curNode=curNode->next; } head=dummy->next; delete dummy; // 删除头结点 return head; } }; //------------- //---数组数据插入链表---------------- ListNode* createList(int a[],int n){ ListNode* head=NULL,*p=NULL; for(int i=0;i<n;i++){ if(head==NULL){ head=p=new ListNode(a[i]); }else{ p->next=new ListNode(a[i]); p=p->next; } } return head; } void printList(ListNode* h){ while(h!=NULL){ printf("%d ",h->val); h=h->next; } printf("\n"); } //------------- int main(){ Solution s; int a[]={1,3,5,6,7,10}; ListNode* p1=createList(a,sizeof(a)/sizeof(int)); printList(s.swapPairs(p1)); return 0; }
相关文章推荐
- Nodejs初阶之express
- mac安装 git npm Yeoman node.js等
- 源码安装nodejs
- node.js系列(实例):原生node.js+formidable模块实现简单的文件上传
- 237. Delete Node in a Linked List
- Sqoop import加载HBase过程中,遇到Permission denied: user=root, access=WRITE, inode="/user":hdfs:supergroup:drwxr-xr-x
- 19. Remove Nth Node From End of List
- 使用nvm进行node多版本管理
- npm, node版本更新
- 利用node.js来mock假数据
- Node.js和Express安装
- express+nodejs编程
- node.js学习笔记(21) express日志
- OpenStack Icehouse Installation - Multi Node
- 关于Node节点上一些坐标的转换的运用
- nodejs异步控制利器Async
- NodeJs 国内镜像
- nodejs基于async waterfall/retry的出错重试流程设计
- Leetcode题解 24. Swap Nodes in Pairs
- Leetcode题解 19. Remove Nth Node From End of List