反转链表的三种方法--面试必考(图例超详细解析,小白一看就会!!!)

目录

一、前言

二、题目描述 

三、解题方法

 ⭐ 头插法 --- 创建新的链表

 ⭐ 迭代法 --- 三指针

 ⭐ 递归法

四、总结与提炼

五、共勉


一、前言

       反转链表这道题,可以说是--链表专题--,最经典的一道题,也是在面试中频率最高的一道题目,通常在面试中,面试官可能会要求我们写出多种解法来实现这道题目,所以大家需要对这道题目非常熟悉哦!!
      本片博客就来详细的讲讲解一下 反转链表的多种实现方法,让我们的面试变的更加顺利!!!

二、题目描述 

 给你 单链表 的头节点 head ,请你反转链表,并返回反转后的链表。

 三、解题方法

 ⭐ 头插法 --- 创建新的链表

        头插这种方法,就是将结点一一地插入到新链表的头前,所以我们需要先去建立出一个新的链表头,也就是我下面的这个【rhead】,通过去遍历原先的链表将这些结点一一转移过去即可

  • 定义三个 变量 cur 、newnode 、rhead 
  • cur :用于遍历整个旧链表          newnode :用于记录cur的下一个节点,防止旧链表找不到
  • rhead :新链表的头节点
// 重新创建一个链表,将之前的链表进行头插即可
struct ListNode* rphead = NULL;
// 进行指针变换
struct ListNode* cur = head;

  •  开始头插,cur 节点的 next 指向 rhead 节点,然后更新 rhe
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值