LintCode 35: Reverse Linked List

题目描述

翻转一个链表。

样例

给出一个链表1->2->3->null,这个翻转后的链表为3->2->1->null

Mon Mar 6 2017

思路

这道题的方法就很多了,我这里第一想到的就是用三个指针来实现,可能我以前这么实现过吧。

不过这个方法并不是最优的方法,还可以用两个指针,或者递归实现,这些坑以后再补吧。

代码

// 反转链表
class Solution {
public:
/**
* @param head: The first node of linked list.
* @return: The new head of reversed linked list.
*/
ListNode *reverse(ListNode *head) {
ListNode* ans;
if (head == NULL || head->next == NULL) return head;
else if (head->next->next == NULL)
{
head->next->next = head;
ans = head->next;
head->next = NULL;
return ans;
}
ListNode *p1 = head, *p2, *p3;
while(1)
{
p2 = p1->next;
p1 =
}
}
ListNode *reverse(ListNode *head) {
ListNode* ans;
if (head == NULL || head->next == NULL) return head;
else if (head->next->next == NULL)
{
head->next->next = head;
ans = head->next;
head->next = NULL;
return ans;
}
ListNode* p1 = head, *p2 = NULL, *p3 = NULL;
while(1)
{
if (p1 != NULL && p1->next != NULL && p1->next->next != NULL)
{
p2 = p1->next;
p1->next = p3;
p3 = p2->next;
p2->next = p1;
p1 = p3->next;
p3->next = p2;
continue;
}
else if (p1 != NULL && p1->next != NULL && p1->next->next == NULL)
{
ans = p1->next;
ans->next = p1;
p1->next = p3;
}
else if (p1 != NULL && p1->next == NULL)
{
ans = p1;
ans->next = p3;
}
else
{
ans = p3;
}
break;
}
head->next = NULL;
return ans;
}
};

最新文章

  1. Java中Array.sort()的几种用法(需要初始化要排序的对象)
  2. WCF的创建及其服务配置
  3. 通过SQL Server Profiler来监视分析死锁
  4. Google账户_GooglePlay_关联
  5. DataTableToExcel
  6. PHP 碎片
  7. JNI-入门之一
  8. 解决WordPress邮件无法发送问题
  9. Hbase的架构原理、核心概念
  10. LeetCode 2
  11. 吴恩达深度学习第1课第4周-任意层人工神经网络(Artificial Neural Network,即ANN)(向量化)手写推导过程(我觉得已经很详细了)
  12. powerDesigner生成数据结构图以及对应sql导出方法
  13. python nympy 序列化dict
  14. selenium爬取煎蛋网
  15. GitLab管理之 - Gitlab 用户管理
  16. Python打包项目为EXE程序
  17. 【题解】 [HNOI2009] 最小圈 (01分数规划,二分答案,负环)
  18. bitBucket readme文件图片添加
  19. HTML中DOM元素的子节点为空?!firstChild, lastChild, childeNodes[]为空
  20. atitit.atiHtmlUi web组件化方案与规范v1

热门文章

  1. 1014 C语言文法定义与C程序的推导过程
  2. 关于Jquery使用中遇到典型问题集锦
  3. PHP 常用函数总结(一)
  4. 如何调换antd中Modal对话框确认按钮和取消按钮两个按钮的位置
  5. delphi adoquery的post和UpdateBatch
  6. 用python和unittest编写app自动化测试用例
  7. python自动化之正则
  8. Nagios通过企业微信报警
  9. 洛谷 P3197 [HNOI2008]越狱 解题报告
  10. 开源nginx_lua_waf部署安装