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