Reorder List

Given a singly linked list L: L0L1→…→Ln-1Ln, reorder it to: L0LnL1Ln-1L2Ln-2→…

You must do this in-place without altering the nodes' values.

For example, Given {1,2,3,4}, reorder it to {1,4,2,3}.

说明:分三步,1。从中间分开,成两部分。2,后半部分链表逆置。3.插入合并。

/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
void reorderList(ListNode *head) {
if(head == NULL) return;
ListNode *p1, *p2, *p3, *head2;
p1 = p2 = head;
while(p2->next && p2->next->next) {
p1 = p1->next;
p2 = p2->next->next;
}
head2 = p1->next; p1 = p1->next = NULL;
p2 = head2;
while(p2) {
p3 = p2->next;
p2->next = p1;
p1 = p2;
p2 = p3;
}
head2 = p1; p1 = head;
while(head2 && p1) {
p2 = head2->next;
head2->next = p1->next;
p1->next = head2;
head2 = p2;
p1 = p1->next->next;
} }
};

最新文章

  1. 浅谈:java泛型与dao重用
  2. 跨域调用webapi
  3. ES6中块作用域之于for语句是怎样的?
  4. 1341 - Aladdin and the Flying Carpet ---light oj (唯一分解定理+素数筛选)
  5. AFHTTPClient的异步回调模式
  6. 【MariaDB】MariaDB编译参数
  7. 【LeetCode 234】Palindrome Linked List
  8. mysqlsla 分析mysql慢查询日志
  9. zabbix流量汇聚
  10. TODO:小程序的使用体验
  11. Linux学习总结(七)—— CentOS软件包管理:脚本安装
  12. 磁盘管理 之 parted命令添加swap,文件系统
  13. 什么是bgp线路
  14. Kettle参数化配置
  15. Python内置函数(32)——all
  16. Python基础之元组
  17. http请求抓包神器-Fiddler(记录和检查你电脑的所有http通讯)
  18. MySQL中间件之ProxySQL(3):Admin管理接口
  19. C-Linux_毫秒级随机值获取
  20. jupyter notebook新用法

热门文章

  1. Java中final的作用
  2. ubuntu下firefox浏览器flash player插件的安装
  3. Day9 summary
  4. rpm软件包管理
  5. lucene教程简介
  6. mongodb,redis,hbase 三者都是nosql数据库,他们的最大区别和不同定位是什么?
  7. Filco minila 的蛋疼。
  8. python数据结构与算法——图的基本实现及迭代器
  9. 构建一个简单的WCF应用——WCF学习笔记(1)
  10. 用javaScript实现 登陆记住密码功能。