剑指offer反转链表(C++实现|测试用例|迭代法和递归法)
方法1:迭代法
代码:
#include<iostream>
using namespace std;
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode*cur = NULL;
ListNode*pre = head;
if(head == NULL||head->next==NULL)
{
return head;
}
while(pre!=NULL)
{
ListNode* p = pre->next;
pre->next = cur;
cur = pre;
pre = p;
}
return cur;
}
};
int main()
{
ListNode* head = new ListNode(1);
ListNode* sec = new ListNode(4);
ListNode* thr = new ListNode(5);
ListNode* fou = new ListNode(9);
head->next = sec;
sec->next = thr;
thr->next = fou;
fou->next = nullptr;
Solution s;
ListNode*p_head = s.reverseList(head);
while(p_head!=nullptr)
{
cout <<p_head->val<<endl;
p_head = p_head->next;
}
}
方法2:递归
代码:
ListNode* reverseList_1(ListNode* head)
{
if(head==NULL||head->next==NULL)
{
return head;
}
ListNode* cur = reverseList_1(head->next);
head->next->next = head;
head->next = NULL;
return cur;
}
剑指offer反转链表(C++实现|测试用例|迭代法和递归法)相关推荐
- 剑指offer -- 反转链表
先摆明重要性 剑指offer -- 反转链表 校招原题 解法一:迭代 翻转 即 将所有节点的next指针指向前驱节点. 由于是单链表,我们在迭代时不能直接找到前驱节点,所以我们需要一个额外的指针保存 ...
- 【链表】剑指offer:反转链表
描述 给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头. 要求:空间复杂度 O(1),时间复杂度 O(n) . 当输入链表{1 ...
- 【每日一题】剑指 Offer 22. 链表中倒数第k个节点
剑指 Offer 22. 链表中倒数第k个节点
- 【LeetCode】剑指 Offer 22. 链表中倒数第k个节点
[LeetCode]剑指 Offer 22. 链表中倒数第k个节点 文章目录 [LeetCode]剑指 Offer 22. 链表中倒数第k个节点 一.遍历 二.双指针 总结 一.遍历 先遍历统计链表长 ...
- 力扣—— 19. 删除链表的倒数第 N 个结点(java)、剑指 Offer 22. 链表中倒数第k个节点(java)
19. 删除链表的倒数第 N 个结点(java) 一.题目描述 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点. 进阶:你能尝试使用一趟扫描实现吗? 输入:head = [1,2,3 ...
- 每日一题——剑指 Offer24反转链表
如果您是第一次看我写的博客,可以给我点个赞并关注我吗,我会持续分享更多有意思的干货. 文章目录 1 题目 2 思路 3 代码 4 小结 1 题目 剑指 Offer 24. 反转链表 定义一个函数,输入 ...
- 剑指Offer #14 链表中倒数第k个结点(快慢指针) | 图文详解
题目来源:牛客网-剑指Offer专题 题目地址:链表中倒数第k个结点 题目描述 输入一个链表,输出该链表中倒数第k个结点. 节点结构如下: public class ListNode {int val ...
- 剑指offer之链表续
面试题17:合并两个有序链表 这道题用递归,很容易实现,但是一定要注意代码鲁棒性 下面是源码: public static ListNode MergeList(ListNode head1,List ...
- 《剑指offer》-- 链表中倒数第k个节点、反转链表、合并两个排序的链表
一.链表中倒数时第k个节点: 1.题目: 输入一个链表,输出该链表中倒数第k个结点. 2.解题思路:单链表具有单向移动的特性. (1)第一种:先遍历链表,算出链表节点数count,第二次直接遍历到第c ...
最新文章
- openface 和openpose(pytorch)剪枝之路
- 聚类--K均值算法:自主实现与sklearn.cluster.KMeans调用
- 怎么样才算是精通 Python?
- python全栈开发要学些什么_如何迅速学习Python 全栈开发?
- poj-2828 Buy Tickets ***
- 传江民总裁王江民因心脏病突发逝世 享年59岁
- qt 设置串口起始位_【IT专家】Qt:如何设置主窗口的初始位置?
- 惠普照片打印软件_被看错的打印机?原来打印机还可以这么玩
- 【精彩实况】第三届大数据科学与工程国际会议
- win10服务器文件夹显示不全,如何让Win10文件夹始终显示功能区有哪些方法
- 软件中Undo(撤回)和Redo(重做)的实现
- Python判断字符串是否为数字(数字、小数、负数、负小数、0)
- python读取二进制文件_python中读写二进制文件
- 共享文件夹----详细教程
- teredo 服务器无响应,teredo 服务器能ping通但就是连不上
- 谷歌要收购这家脑电波控制器公司
- Acro Design Pro vue - table 行点击高亮显示
- 数据仓库工程师面经(未完)
- 从零开始的MySQL教程——下
- 爬虫系列:某家小区房产信息及POI数据获取
热门文章
- 关于ALTERA的FPGA的弱上拉问题
- 强制浏览器使用兼容模式,Web.config,httpProtocol
- webpack-dev-server 不是内部或外部命令,也不是可运行的程序 解决方案
- 【python数据挖掘课程】二十九.数据预处理之字符型转换数值型、标准化、归一化处理
- [数据库] Navicat for Oracle设置唯一性和递增序列实验
- 【数据结构与算法】之深入解析“平衡二叉树”的求解思路与算法示例
- OpenGL之利用模型视图矩阵和投影矩阵让球体自动旋转
- 和程序员在一起是怎样的体验
- 大数据 互联网架构阶段 Nginx的使用
- 大数据WEB阶段Maven安装配置与使用