[LeetCode]88. Swap Nodes in Pairs链表成对逆序
2015-11-16 18:58
246 查看
Given a linked list, swap every two adjacent nodes and return its head.
For example,
Given
Your algorithm should use only constant space. You may not modify the values in the list, only nodes itself can be changed.
Subscribe to see which companies asked this question
解法:题目要求不能修改节点的值,因此只能调整节点的指针。每次调整两个节点,依次往前移动。
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.
Subscribe to see which companies asked this question
解法:题目要求不能修改节点的值,因此只能调整节点的指针。每次调整两个节点,依次往前移动。
/** * 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) { if (head == NULL || head->next == NULL) return head; ListNode* help = new ListNode(0); help->next = head; ListNode *first = help, *second = head, *third = head->next; while (third != NULL) { ListNode* tmp = third->next; third->next = first->next; // 调整一对节点 first->next = third; second->next = tmp; if (tmp == NULL) break; first = second; // 前移到下一对节点 second = tmp; third = tmp->next; } return help->next; } };
相关文章推荐
- nodejs使用radis
- nodejs npm gulp bower 几点
- nodejs抓取页面内容,并分析有无某些内容的js文件
- PHP vs Node.js
- jello环境配置
- Zookeeper节点Znode
- 用C/C++来实现 Node.js 的模块(下)
- 用C/C++来实现 Node.js 的模块(上)
- Node.js学习笔记8
- nodejs 利用express框架 创建一个简单的web项目
- nodejs理解
- Node.js学习笔记7-文件系统
- node压缩js/css/image
- node.js学习笔记6
- 19 Remove Nth Node From End of List
- LeetCode 25_Reverse Nodes in k-Group
- LeetCode Delete Node in a Linked List
- node.js学习笔记5——核心模块1
- 237 Delete Node in a Linked List
- [LeetCode]79. Delete Node in a Linked List删除链表节点