首页 > 其他分享 >反转一个单链表

反转一个单链表

时间:2023-04-05 10:07:50浏览次数:44  
标签:head 单链 一个 反转 NULL next n1 n2 n3

示例:

输入:1->2->3->4->5->NULL

输出:5->4->3->2->1->NULL

进阶:你可以使用迭代或者递归来反转链表。你能否用两种方法来解决这个问题。

思路我写在了代码当中,欢迎指正。

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     struct ListNode *next;
 * };
 */


struct ListNode* reverseList(struct ListNode* head){//写链表的时候先判断是否为空
    if(head==NULL||head->next==NULL)//表示head为空或者只有一个节点的情况,这样就不用反转了
    {
        return head;//两种情况都一样
    }
//不满足上面的情况的时候
struct ListNode*n1=NULL,*n2=head,*n3=head->next;//如果head为空,则head->next这样写会崩,所以先判断一下(在上面)
while(n2!=NULL)//当n2==NULL时结束
{
  n2->next=n1;//反转,将前一个n1的地址给n2->next
  //迭代,类似于斐波那契
  n1=n2;
  n2=n3;//将后面的给前面
  //但是n3不为空向后迭代,n3为空向后迭代的话就会崩
  if(n3)//n3为空n3不会向后移,但是n2不为空,继续反转迭代(n2没有受到影响)
  n3=n3->next;//n3向后移
}
//n2为空时,搞完了,n1就是链表的“头”
return n1;//有返回值
}

标签:head,单链,一个,反转,NULL,next,n1,n2,n3
From: https://blog.51cto.com/u_15806064/6170226

相关文章

  • 用Wpf做一个思维导图(续3-Diagram画板)
    先上一张简易效果图,本次更新主要仿照百度脑图。同样老规矩,先上源码地址:https://gitee.com/akwkevin/aistudio.-wpf.-diagram本次扩展主要内容:1.思维导图、目录组织图、鱼骨头图、逻辑结构图、组织结构图,入口在文件新建下。2.思维导图工具栏(只有思维导图模式下可见)2.1插入......
  • Ioc_控制反转概念
    Ioc:控制反转,spring反向控制应用程序所需要使用的外部资源,可以理解为spring将类与类之间的耦合断开,改为配置文件和类之间的耦合。Ioc容器:spring所控制的资源全部放在spring容器中,该容器称为Ioc容器。      ......
  • DOM:让一个元素跟随鼠标移动而移动
    <!DOCTYPEhtml><htmllang="en"><head>  <metacharset="UTF-8">  <metahttp-equiv="X-UA-Compatible"content="IE=edge">  <metaname="viewport"content="width=......
  • 一个简单SpringMVC的实现
    之前学习时候,是使用老师的自定义的一个SpringMVC模式,今天突然好奇,官方的SpringMVC架构咋弄,于是带着好奇的心去实现完成它其实这个模式也比较简单1:首先,我们创建一个maven,web的网页项目,JDK选择1.8版本   2:在创建完之后,鼠标右键点击main目录,同时选择java和resource包按回车......
  • 01_微信公众号_话题_提取链接_一行一个
    nodejscheerio提取超链接import{log}from"console";import{readFileSync,readdirSync,lstatSync,createWriteStream,mkdirSync,statSync,}from"fs";import{basename,join,resolve}from"path";import{load......
  • 超详细!新手如何创建一个Vue项目
    目录一、在官网下载Vue.js二、使用<script>标签直接引入本地的vue.js三、使用CDN引入Vue.js四、验证是否安装成功五、安装VueDevtools浏览器调试插件不同浏览器导入方法本篇仅以HBuilderX为例,其余开发软件同样适用这里两种方法,使用<script>标签直接引入本地的vue.js或使用CDN......
  • 31. 下一个排列
    题目描述整数数组的一个 排列 就是将其所有成员以序列或线性顺序排列。例如,arr=[1,2,3] ,以下这些都可以视作 arr 的排列:[1,2,3]、[1,3,2]、[3,1,2]、[2,3,1] 。整数数组的 下一个排列 是指其整数的下一个字典序更大的排列。更正式地,如果数组的所有排列根据其字典......
  • win10同步当前项目git的更新记录到另一个项目
    1.备份某个时间之后的更新文件列表到文件中gitlog--after="2023-4-318:27:44"--name-only--pretty=format:"">commit_files.txt2.根据文件中的记录复制文件到新的文件夹@echooffsetlocalenabledelayedexpansionsetinput_file=commit_files.txtsetoutput_fold......
  • flutter系列之:创建一个内嵌的navigation
    目录简介搭建主Navigator构建子路由总结简介我们在flutter中可以使用Navigator.push或者Navigator.pushNamed方法来向Navigator中添加不同的页面,从而达到页面调整的目的。一般情况下这样已经足够了,但是有时候我们有多个Navigator的情况下,上面的使用方式就不够用了。比如我们有一个......
  • 从零开始设计一个右键菜单组件
    需求分析首先要分析右键菜单需要实现什么功能点击鼠标右键弹出自定义的弹窗实现菜单项的点击自定义菜单项的样式自定义弹窗容器的样式代码实现需求搞定之后就是写代码了,下面是基础的代码框架<template><divclass="yak-content-menu"@contextmenu="showContentMenuFn"@click="......