反转链表(C语言)———链表经典算法题

 题目描述​​​​​​206. 反转链表 - 力扣(LeetCode):

答案展示:

迭代:

递归:

/*** Definition for singly-linked list.* struct ListNode {*     int val;*     struct ListNode *next;* };*/
struct ListNode* reverseList(struct ListNode* head) {static struct ListNode*tmp1 = NULL;if(!head)return tmp1;//判空else if(head->next){逆置struct ListNode*tmp2 = head->next;head->next = tmp1;tmp1 = head;return reverseList(tmp2);}else{   //结束同时初始化tmp1head->next = tmp1;tmp1 = NULL;return head;}
}

亮点:

迭代:

使用了三个指针,重头到尾遍历一遍,两两反转,其实这个思路不难想到,也应该想到。

递归:

官方(十分值得学习):

合理地调整代码顺序可以让代码更加巧妙。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何设计测试用例

一、介绍 测试用例就是一个文档,描述输入、动作、或者时间和一个期望的结果,其目的是确定应用程序的某个特性是否正常的工作。 二、基本格式 用例的基本要素包括测试用例编号、测试标题、重要级别、测试输入、操作步骤、预期结果等。 用例编号&#…

C程序内存分布及static变量

C程序内存分布及static变量 C语言中程序的内存分布 [🔗1](https://www.cnblogs.com/miaoxiong/p/11021827.html)[🔗2](https://blog.csdn.net/chen1083376511/article/details/54930191)c/c编译连接后二进制文件的存储动静态存储方式和存储区动态存储方式…

一文读懂ipv4和ipv6的区别

IPv4和IPv6是互联网协议的两个主要版本,它们在多个方面存在显著的差异。以下是关于IPv4和IPv6之间区别的详细探讨: 一、地址空间 IPv4使用32位地址,理论上可以表示约42.9亿个不同的地址。然而,由于地址分配的不均衡以及网络技术的…

【更具吸引力的回答】Java中final、finally、finalize的区别(一)

在Java中,final、finally和finalize是三个容易混淆的关键字,但它们各自具有不同的作用、用途和限制。下面我将从您提到的几个方面来解释它们之间的区别: 1. final 概念与用途:final关键字在Java中用于表示“不可变性”。它可以用…

rbac和多级请假业务系统相关面试题

1.请说明你的项目及使用的技术 面试官你好!这个项目是办公自动化OA系统,我们通过这个项目来对公司内部的一系列流程性的工作进行无纸化处理,比如公司内部的请假流程就是通过这个系统逐级进行审批,我在这个系统中主要负责底层框架的搭建以及去实现请假流程这个功能,本次项目…

算法有哪些分类

算法的分类可以根据不同的标准来进行,以下是一些常见的算法分类: 基本算法分类: 搜索算法:包括线性搜索、二分搜索、哈希搜索、深度优先搜索(DFS)、广度优先搜索(BFS)等。 排序算法…

Linux下工具tc详细讲解及限制IP和端口实例

首先纠正某一篇博客,TC并不是只管发包不管收包,之前我也很纳闷 知道最后看到了14年前一位大佬的帖子。是ingress! 这里有个非常重要的点就是ingress,如果父类不是他的话是完不成限制源IP的,这个关键词表明你正在添加一个入口队列规…

设计模式——模板模式(Template)

模板模式(Template Method Pattern)是一种行为设计模式,它在一个方法中定义了一个算法的骨架,并允许子类为一个或多个步骤提供实现。模板模式使得子类可以在不改变算法结构的情况下,重新定义算法中的某些特定步骤。 主…

软件测试至关重要

软件测试在现代软件开发流程中占据着至关重要的位置,它不仅是确保软件质量的关键环节,还直接关系到用户体验、企业信誉及成本控制等多个方面。 以下是软件测试重要性的几个核心论述: 1. 提升软件质量:软件测试通过识别和报告错误…

基于springboot实现智慧图书管理系统项目【项目源码+论文说明】

基于springboot实现智慧图书管理系统演示 摘要 如今社会上各行各业,都在用属于自己专用的软件来进行工作,互联网发展到这个时候,人们已经发现离不开了互联网。互联网的发展,离不开一些新的技术,而新技术的产生往往是为…

Docker操作之启动多个相同容器实例并nginx负载均衡

文章目录 前言 一、一些概念 1.Docker 2.nginx 二、操作步骤 1.构建compose.yaml 2.nginx配置 3.Docker compose命令 4.问题与解决 总结 前言 Docker对于开发、运维人员来说都很熟悉,但是对于开发人员来说,多数时候只需一个容器实例运行即可。…

VBA_NZ系列工具NZ06:VBA创建PDF文件说明

我的教程一共九套及VBA汉英手册一部,分为初级、中级、高级三大部分。是对VBA的系统讲解,从简单的入门,到数据库,到字典,到高级的网抓及类的应用。大家在学习的过程中可能会存在困惑,这么多知识点该如何组织…

python bisect 二分算法工具以及应用

python bisect 工具以及应用 主要用于在顺序固定的序列中查找以及插入 内置了四种方法 bisect_leftbisect_rightinsort_rightinsort_left bisect_left/right 方法找到应该插入元素的位置,对于和序列中元素不相同的值,两个方法返回的一样,对…

python数据处理(pandas)

# 新的数据格式,csv纯文本,使用某个字符集,比如都是ASCII、Unicode、EBCDIC或GB2312(简体中文环境)等;由记录组成(典型的是每行一条记录)每条记录被分隔符(英语&#xff…

ffmpeg 7.0 + vs2022 +windows编译

后面有总结: 安装msys2 打开 (这一步非常重要不然就得指定vs的环境) x64 Native Tools Command Prompt for VS 2022运行 在x64 Native Tools Command Prompt for VS 2022命令行中切换到msys2安装目录中 打开 msys2_shell.cmd运行 安装 pa…

GNU/Linux - 如何使用lsmod和modinfo命令

How to Use the lsmod and modinfo Commands in Linux Linux 内核是模块化的,这意味着可以根据需要添加和删除模块。这就造就了一个轻量级、安全和轻便的内核。它的灵活性让你可以添加和删除你需要的功能,使操作系统符合你的使用情况和偏好。 The Linux …

企业大文件传输之安全数据传输的重要性

企业数据安全性的维护直接关系到企业的市场竞争力乃至其生存的根基。数据的保护不仅涉及到保护企业的商业秘密,也关乎到客户隐私的保护,更触及到国家安全的敏感层面。因此,保障数据在传输过程中的安全,成为了每个企业和组织必须面…

Linux中的fork与进程地址空间

目录 前言 一、进程地址空间 二、fork的值返回 三、高清图链接 总结 前言 在博主的《进程状态解析》一文中,在讨论进程创建时,提到了一个系统调用接口fork,它在使用过程中表现出对于父子进程不一致的返回结果,而且似乎还具有…

python笔记(17)输入输出

一、标准输入与输出简介 Python通过内置的sys模块管理标准输入(stdin)、标准输出(stdout)和标准错误(stderr)。但对大多数简单应用而言,直接使用内置函数就足够了。 二、输入:inpu…

ETL工具kettle(PDI)入门教程,Transform,Mysql->Mysql,Csv->Excel

什么是kettle,kettle的下载,安装和配置:ETL免费工具kettle(PDI),安装和配置-CSDN博客 mysql安装配置:Linux Centos8 Mysql8.3.0安装_linux安装mysql8.3-CSDN博客 1 mysql -> mysql 1.1 mysql CREATE TABLE user_…