网站首页 > 精选教程 正文
面试必备:链表翻转。
兄弟们,今天来讲一下用迭代的方式去翻转列表,这是很容易想到的一种处理方式。看一下这构建了一个链表,从一节点指向二节点指向三节点,看具体是怎么去通过迭代的方式去翻转列表。
现在目前有一个列表是从一二三指向这样的列表,要翻转是从三指向二指向一。迭代的方式就是首先拿到第一个节点,然后就处理它的指向的关系。拿到第一个节点就指向往前面的一个关系,拿到第二个节点就指向一的节点,拿到三节点指向二的节点,这样就翻转过来了。
需要几步?需要四步。
·第一、要保存二和三的临时节点。因为在这更新了一的节点之后,二和三的临时节点有可能会丢掉。
·第二、会把当前节点一,把指针指向前面的一个零,这就是迭代就完了。
·第三、会为下一个比如在坑二节点作为迭代的时候要做一些准备,要做什么?首先要把前节点要更新成一这个节点,第二会把当前节点要更新成二的节点就 ok 了。
看一下代码实现。首先是创建一个链表,链表声明了两个变量,第一个是保存下一个就是临时节点,这就是临时节点,这就是前节点。
·第四、会把当前节点就是链表的第一个节点作为便利的标尺,指针就是当天节点,当天节点的下一个节点就要指向下一个节点作为临时变量去存储,临时编的可以改成tempo。
·第五、临时节点去存储,存储了之后再把下一个节点的指针指向前面,就在这,把下一个指针指向前面,指完了之后会进行下一次循环的准备,就把前面的节点更新成当前节点,就是已经从一指向了pro will,在处理第二次的时候就应该是pro will,所以把下一次的节点,把下一次的当前的节点更新成下一次处理的pro will。
·第六、再把临时节点更新到当前节点,这就是临时节点,临时节点就是next,就是temper。
·第七、更要更新成什么?就是要更新成比如下一个节点就是二的,这二的就是之前的当前节点的下个节点,当前节点的下个节点就是这个节点的下一个节点,那就是二,把变成二就指针就到这来了。
所以下次再循环的时候就直接再一次判断的时候就是当前节点都已经变成二的节点,一直把二和三这样一直循环下去,就由列表就。已经进行了翻转,可以看一下,这是一二三四五,便利完了之后是五四三二一,ok,就已经讲完了,最主要代码就是在这一块,拜拜。
- 上一篇: 每日算法---单链表反转和是否有环
- 下一篇: LeetCode-206-反转链表 反转链表 迭代
猜你喜欢
- 2024-11-02 LeetCode-025-K 个一组翻转链表 每k个一组翻转链表
- 2024-11-02 C++算法(五)反转链表 反转链表c#
- 2024-11-02 61. 旋转链表 反转链表 头插法
- 2024-11-02 字节面试算法集第三题链表反转 #算法
- 2024-11-02 Java数据结构和算法—链表 java中的链表数据结构
- 2024-11-02 面试现场:如何实现链表的逆序? 链表逆置是什么意思
- 2024-11-02 LeetCode-206-反转链表 反转链表 迭代
- 2024-11-02 每日算法---单链表反转和是否有环
- 2024-11-02 C++:挑战鹅厂面试题(一)--反转链表
- 2024-11-02 极客算法训练笔记(三),链表详细图解,别再逃避了朋友
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)