LeetCode 206. Reverse Linked List(C++)
2024-09-14 14:58:55
题目:
Reverse a singly linked list.
Example:
Input: 1->2->3->4->5->NULL
Output: 5->4->3->2->1->NULL
Follow up:
A linked list can be reversed either iteratively or recursively. Could you implement both?
分析:
分别用迭代和递归来实现。
迭代就是新建一个newhead节点,遍历原链表,将每一个node接到newhead,注意保存head->next用来更新head。
递归则是利用函数先走到链表尾端,依次更新每一个node的next,最后返回newhead。
程序:
//iteratively
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *newhead = NULL;
while(head){
ListNode *p = head->next;
head->next = newhead;
newhead = head;
head = p;
}
return newhead;
}
};
//recursively
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == NULL || head->next == NULL){
return head;
}
ListNode* newhead = reverseList(head->next);
head->next->next = head;
head->next = NULL;
return newhead;
}
};
最新文章
- 深入理解javascript函数系列第一篇——函数概述
- mybatis oracle BLOB类型字段保存与读取
- GNU make规则的命令④书写命令
- Linux-小命令技巧
- 关于RACK的一点简单介绍
- 【转】驱动中的类class和节点
- rnqoj-30- [stupid]愚蠢的矿工-树形DP
- C++空类中的默认函数
- lamp论坛搭建
- 分享一个废弃已久的插件架构 (.Net)
- androidstudio连接SCM Manager上的Git库
- 如何构建Android MVVM 应用框架
- 程序员从宏观、微观角度浅析JVM虚拟机!
- 文本分布式表示(一):word2vec理论
- gerrit和git
- h5上传视频文件
- Linux安装jdk环境
- enq: TM - contention一例
- 禁止 ";启动时恢复任何注册的应用程序";
- js 弹出新页面,避免被浏览器、ad拦截的一种办法