方法1:用三个指针实现单链表(有头结点)的逆置

void Reverse(HeadList *head)
{if(head==NULL||head->next==NULL||head->next->next==NULL)return ;HeadList *s=NULL;HeadList *p=head->next;HeadList *q=p->next;while(p!=NULL){p->next=s;s=p;p=q;if(q!=NULL){q=q->next;}}head->next=s;//头结点指向尾结点
}

方法2:用两个指针实现单链表(有头结点)的逆置 ,利用head->next代替上面代码的s指针

void Reverse(HeadList *head)
{if(head==NULL||head->next==NULL||head->next->next==NULL)return ;HeadList *p=head->next;HeadList *q=p->next;head->next=NULL;while(p!=NULL){p->next=head->next;head->next=p;p=q;if(q!=NULL){q=q->next;}}
}

方法3:使用递归方法将单链表逆置(无头结点)
使用递归函数,一直递归到链表的最后一个结点,该结点就是反转后的头结点
此后,每次函数在返回的过程中,让当前结点的下一个结点的 next 指针指向当前节点
同时让当前结点的 next 指针指向 NULL ,从而实现从链表尾部开始的局部反转
当递归函数全部出栈后,链表反转完成。

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;//返回新的头结点
}

55-将单链表原地逆置(三种方法)相关推荐

  1. C++ 头插法建立单链表,单链表原地逆置以及尾插法建立单链表

    #include <iostream> #include <stdlib.h> #include <cstdio> typedef int ElemType; us ...

  2. 链表逆置(三种方法详解)

    @Achievek 6-1 单链表逆转 (20 point(s)) 本题要求实现一个函数,将给定的单链表逆转. ##函数接口定义: List Reverse( List L ); 其中List结构定义 ...

  3. 单链表实现反转的三种方法

    单链表的操作是面试中经常会遇到的问题,今天总结一下反转的几种方案: 1 ,两两对换 2, 放入数组,倒置数组 3, 递归实现 代码如下: #include<stdio.h> #includ ...

  4. C语言实现单链表的逆置

          单链表的逆置是一个非常经典的问题,这里利用两个思想进行解决.       首先,我们需要看下原理图,其实两个思想都是一样的,都是使后一个的节点的 next 指针指向前一个节点,依次递推,直 ...

  5. 无头结点单链表的逆置_第1章第2节练习题11 就地逆置单链表

    ## 问题描述 > 试编写在带头结点的单链表就地逆置,所谓"就地"是指辅助空间为O(1) ## 算法思想1 > 将头结点摘下,然后从第一个结点开始,依次插入到头节点的后 ...

  6. java实现单链表就地逆置,20. 微软面试题:单链表就地逆放

    题目是:链表操作,单链表就地逆置 分析: 这题只需要设置三个指针就搞定了,ListNode* p 表示当前指针, ListNode* fp: 上一个节点指针, ListNode * ep :下一个节点 ...

  7. 无头结点单链表的逆置_解析单链表逆置的多种方法 | 术与道的分享

    单链表的逆置还是很重要的,不过第一次写逆置的时候程序就直接奔溃了,因为解决与链表相关的问题总是有大量的指针操作,而指针操作的代码总是容易出错的,因此这也就成就了单链表在面试中的地位. 1.普通循环逆置 ...

  8. 试写一算法,对单链表进行逆置

    NOTICE: 本篇代码是按照源码的书写顺序所写,复制之后可直接运行. 环境: vscode 题目: 试写一算法,对单链表进行逆置 分析: 单链表的逆置需要设置两个指针,第一个进行遍历单链表:第二个进 ...

  9. 无头结点单链表的逆置_单链表的增删查 逆置 倒数第k个节点等问题

    对于单链表而言,它没有双链表那么复杂,它只有头节点,尾节点,节点数据,后继指针.在下面本人实现了 单链表的 增   删   插  查  改. #include #include #include #i ...

最新文章

  1. 学完HTML5后可以开发哪些互联网产品呢?
  2. java 枚举类型 构造函数及用法
  3. SAP CRM WebClient UI BSP customized theme storage table
  4. 串口服务器信号连接不上,使用RS485串口服务器经常遇到的问题
  5. 第65课 采访报道 《小学生C++趣味编程》
  6. 负债会让你有多大改变?
  7. 在shell中使用echo命令输出带颜色的文本-转
  8. 广州新一代域名注册量动态:11月下旬净增3425个
  9. 20CM网线你会拿来干什么??
  10. FunctionalInterface注解
  11. this.$message
  12. RuntimeError: The size of tensor a (4) must match the size of tensor b (3)
  13. 2022年第五届中青杯数学建模-时间序列预测模型及基于多特征条件下的决策优化
  14. 非常详细的Series核心操作使用详解
  15. soul 网关源码解析
  16. Go环境搭建和GoLand安装
  17. 企业如何选择一款适合自己的信息化管理系统?
  18. 程序人生:初学者中最最最常问的问题都有哪些呢???
  19. “空对象 {}” 与 “空数组 []” 的相加问题(详解)
  20. VMware 安装Rocky9.0

热门文章

  1. ACPC2015 K 树的直径
  2. 分布式数据库之TiDB
  3. 20年21年嵌入式校招薪资大曝光!!!
  4. 后端开发工程师的生命周期,生命在于学习
  5. asp.net实现识别客户端浏览器或操作系统
  6. Swift语言入门学习
  7. The operation couldn't be completed.(LaunchServicesError error 0.)问题描述和解决方法
  8. “十四五”数字泉城建设应用场景
  9. 百度在北京和深圳主攻腾讯 新浪等一些IM公司,大力挖人,甚至爆出15w-20w年薪,有人士对百度的行为做出以下分析:
  10. php工作日,计算工作日的天数