链表的倒序

2023-05-16

1.用函数实现:定义3个临时变量,p1储存当前节点,p2储存后一个节点,p3储存重新指向的那个节点

步骤:1.p1指向当前节点,p2指向后一个节点,将p2的指向域重新指向p1,但是p2的下个节点会丢失,因此需要用p3将p2储存起来,循环。

void invert(node** ph)
{
        node* p1,*p2,*p3;
        p1=*ph;
        p2=p1->next;
        while(p3!=NULL)
        {
                p3=p2->next;
                p2->next=p1;
                p1=p2;
                p2=p3;
        }
        (*ph)->next=NULL;
        *ph=p1;
}

这里传递的参数是二级指针,因为倒序之后的头结点需要改变,修改之后的节点为头节点。

2.用递归实现

递归就是栈!递归就是栈!递归就是栈!重要的事情说三遍,递归的过程是进栈的的过程,返回就是出栈的过程。栈遵循的原则就是先进后出,因此倒序可以用栈和递归实现。

先说一个普通的思路,再说一个简洁的思路

1、如上的循环方法,用递归实现,每一个步骤都是将当前节点的后一个节点重新指向当前节点。传递两个参数,因为头结点最后一次递归过程需要改变,其他时候不能变,将每下一次递归指向前一次。

node* invert1(node** pph,node* ph)
{
        if(ph->next==NULL)
        {
                (*pph)->next=NULL;
                *pph=ph;
                return ph;
        }
        invert1(pph,ph->next)->next=ph;
        return ph;
}

2.每次递归的过程就是将当前节点后一个节点指向前节点,因此我们可以每次递归的时候找到这两个节点,那么每次递归的过程就形成一个你追我赶的过程

void invert(node **pph,node* pfront,node* prear)
{
    if(prear==NULL)
    {
        *pph=pfront;
        return;
    }
    invert(pph,prear,prear->next);
    prear->next=pfront;
}

参数传递时pfront的初始值应该为NULL;

 

 

 

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

链表的倒序 的相关文章

  • 搭建pixhawk飞控无人小车--前期准备

    2019年打算搭建一款无人小车 xff0c 具有遥控 自动走线 激光雷达避障 视觉识别等功能 1 搭建apm开发环境 感谢阿木实验室提供开发环境 xff0c 下载其提供带开发环境的虚拟机即可 下载地址如下 xff1a 该地址已经失效 xff
  • 搭建pixhawk飞控无人小车--替换自带遥控器

    因为小车原装遥控器接收机和电调版整合在一个小板子上 xff0c 且没有相关资料 xff0c 无法接入飞控 因此单独购买遥控器 在某宝上购买富斯遥控器i6 xff0c 总共六个通道 三个双向开关 一个三向开关 遥控器简单入门视频如下 xff0
  • 搭建pixhawk飞控无人小车--飞控接遥控器、舵机、电调以及模式切换

    1 pixhawk飞控的RC IN接遥控器的接收机的PPM CH1 遥控器只需要接这个接线即可 注意飞控正面朝上 xff0c 上面为接地 和遥控器接收机刚好相反 因此不要接错 如下图 2 修改遥控器配置 xff1a System gt RX
  • 欠驱动Or全驱动?——关于机械手驱动方式的介绍与更优选择(以德国Schunk Hand为例)

    这篇文章主要将介绍机械手两种不同驱动方式 即欠驱动和全驱动的定义 应用背景 优劣性能等特性 xff0c 并将以雄克灵巧手为例 xff0c 讨论现阶段机械手驱动方式的更优选择方案 定义 xff1a 首先先来明确欠驱动和全驱动的定义 xff08
  • mysql 批量插入12位随机数字

    解析 xff1a 批量 随机12位数字 mysql随机12位数字 select CEILING RAND 900000000000 43 100000000000 mysql批量处理函数 delimiter create PROCEDURE
  • 俩小伙一晚上写了个 AI 应用,月入两万??(文末附开发教程)

    开发出一款能够与 AI 对话生成和编辑思维导图的工具 xff0c 听起来似乎只能是一群专业的 AI 背景团队花费大量的时间和精力训练模型 xff0c 打磨应用才能完成的事情 但是 xff0c 两名大学生却在一夜之间完成了 xff0c 就像炼
  • 几本对于笔试和面试有用的书

    4本408核心书籍 xff1a 数据结构 计算机操作系统 计算机网络 计算机组成原理 面试宝典 xff1a 程序员面试宝典 剑指offer 编程之美 微软技术面试心得 编程珠玑 Java程序员面试宝典 C语言 xff1a The C Pro
  • 我如何在计算机视觉顶级会议CVPR上发表论文?

    Scalers 点评 xff1a 两个月前 xff0c 成长会的Ramon S290 收到了计算机视觉顶级会议CVPR论文录取的通知 xff0c 而且是口头报告 CVPR在计算机视觉领域属于三大顶级会议之一 xff0c 具有较高的影响力 x
  • nginx整体结构,进程模型

    nginx的整体结构 xff1a 启动nginx 看到了一个master进程 xff0c 一个worker进程 命令 ps ef grep nginx 第一列 xff1a UID 进程所属的用户id 第二列 xff1a 进程ID PID 用
  • ICP、ISP、IAP、JTAG、SWD下载方式

    目录 ICP ISP IAP JTAG SWD下载方式 概述 JTAG SWD ICP ISP IAP ISP与ICP的差别 ISP和IAP的差别 ICP ISP IAP JTAG SWD下载方式 概述 JTAG和SWD是一种标准协议 xf
  • Linux定时任务crontab -e编辑无法保存

    创作时间 xff1a 2022年8月16日09 36 44 提示没权限 进入 var spool下查看cron目录是正常的 xff0c 但是在cron里面没有权限建立文件这个原因 可以尝试先在 var spool cron目录下用vim编辑
  • C++内存分配

    常见的内存分配方式 静态存储区 xff08 基栈 xff09 xff1a 此时的内存在程序编译的时候已经分配好 xff0c 并且在程序的整个运行期间都存在 里面的变量通常为 xff1a static变量 全局变量const常量 xff1b
  • PWM输出讲解

    一 PWM基础知识 1 PWM的定义 PWM xff0c 是脉冲宽度调制 缩写 xff0c 它是通过对一系列脉冲的宽度进行调制 xff0c 等效出所需要的波形 xff08 包含形状以及幅值 xff09 xff0c 对模拟信号电平进行数字编码
  • Win11中安装Linux 教程 | WSL2的使用

    Windows11今天正式向大家开始推送了 xff0c 这也算是十一假期中的一个重磅消息了 我相信有很多小伙伴会升级到Windows11 那这个视频就讲解一下如何在Windows11中安装Linux系统 xff0c 来帮助我们开发 也就是我
  • 没有键盘和显示屏玩转树莓派

    前期准备 win10电脑一台 xff0c 树莓派开发板 xff0c SD卡 xff0c 电源 xff0c 一根网线 xff08 教程中树莓派为RPI3 xff09 废话不说 xff0c 直接跟着走就行了 xff08 1 xff09 把SD卡
  • 无人机遥感应用

    xfeff xfeff 遥感的通用格式为tiff格式 科普 无人机遥感技术的几个领域应用 2016 09 14 10 10 来源 无人机频道 无人机 科普 原标题 xff1a 科普 无人机遥感技术的几个领域应用 无人机遥感在气象监测中的应用
  • Laf Assistant:云开发从未如此爽快!

    原文链接 xff1a https forum laf run d 67 工欲善其事 xff0c 必先利其器 在编写代码时 xff0c IDE 也是我们不可或缺的 它可以让我们更高效地完成代码编写 xff0c 提高开发效率 因此 xff0c
  • S 串口编程 详解4 串口发送数据

    S 串口编程 详解4 串口发送数据 串口发送数据包括 xff1a 十六进制发送数据 手动发送数据 自动发送数据 手动发送数据的代码如下 xff1a 手动发送 long TX count 61 0 void CSCOMMDlg OnButto
  • FreeRtos 获取任务运行时状态以及实现方式分析

    一 获取全部任务的状态 1 1 系统API函数 void vTaskList char pcWriteBuffer 1 2 函数功能 返回所有任务的 xff1a 任务名任务当前运行状态任务优先级任务剩余的最大栈空间任务ID 1 3 函数参数

随机推荐