首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

反转链表

题目 定义一个函数,输入一个链表的头结点,反转链表并输出反转链表的头结点。...暴力解 这结果简直拉胯,我们来做时间和空间复杂度分析,将链表遍历一遍拆掉入栈,然后再将栈遍历一遍出栈生成链表,时间复杂度大致为O(2n),而为了存储节点借用了一个栈的数据结构空间复杂度为O(n),中间临时变量忽略不计...,生成一个新的链表又使用了,空间复杂度为O(2n)。...递归 反转链表根据分治法的思想分解问题后,即将整个链表分解成小问题,问题就变成了反转两个节点,我们只需做以下操作: // cur表示当前节点 let temp = cur.next cur.next =...pre pre = cur cur = temp 当每两个节点之间的指向都改变后,整个链表反转也完成了,代码如下: /** * Definition for singly-linked list

37510

链表反转Java版

头插法与尾插法 本文主要用头插法实现链表反转,开始前先简单了解一下头插法与尾插法。 头插法: 在头节点的后面进行插入操作,后一个插入进来的值,在前一个插入进来的值与头节点之间。...链表反转 链表反转又可分为带逻辑头结点反转和不带逻辑头节点的反转,区别就是反转过程中是否单独设置一个逻辑头结点,具体可见代码。...带逻辑头节点的反转 /** * 输入一个链表的头结点,反转链表并输出反转链表的头结点。.../** * 定义一个函数,输入一个链表的头结点,反转链表并输出反转链表的头结点。...,即null // 也是反转链表的头结点 Node pre = null; // 当前结点的下一个结点 Node next = null; // 对链表进行头插法操作

88730

双向链表反转【面试题】

题目 实现反转单向链表和双向链表,要求:如果链表长度为N,时间复杂度为O(N),额外空间复杂度为O(1) 参考答案 图形表示 单向链表 单向反转请参考Java实现链表及相关操作 双向链表 反转前:头节点的前驱是...反转后:以前的头节点的后继是null,以前的尾节点的前驱是null java代码实现如下: //双向链表节点 public class DoubleNode { public int value...head.next = mid1; mid1.next = mid2; mid2.next = tail; System.out.println("反转前..."); print(head); head = reversalList(head); System.out.println("反转后");...,单向,双向,反转 老规矩,代码截图,免得手机上看代码很不爽 ●【文章汇总】面试篇 ●【文章汇总】Java基础篇 ●【文章汇总】性能调优篇 ●【文章汇总】设计模式篇 ●【文 章 汇 总】Spring家族篇

1.6K20

备战蓝桥杯————递归反转链表

当要求只反转链表中的一部分时,递归实现确实具有一定的挑战性,但也是可行的。下面我将介绍一种递归实现的方法来反转链表中的一部分。...一、反转链表 题目描述     给你链表的头节点 head ,请你反转链表,并返回反转后的链表。...断开原链表反转链表的连接: head.next = null; 将原链表的头节点的 next 指针置为 null,断开原链表反转链表的连接,确保反转链表的尾节点指向 null。...返回反转链表的头结点: return last; 返回反转链表的头结点 last,它是原链表的尾节点,经过反转后成为新链表的头结点。...通过递归地将链表从头到尾反转,最终得到了反转后的链表 /** * Definition for singly-linked list.

11610

java-链表反转解法及分析

文章目录 1.准备链表 2.通过递归实现链表反转 3.通过遍历实现 4.借助stack实现 5.三种实现方式效率分析 最近与人瞎聊,聊到各大厂的面试题,其中有一个就是用java实现链表反转。...1.准备链表 准备一个由DataNode组成的单向链表,DataNode如下: public class DataNode { private int data; private DataNode...DataChain chain = new DataChain(10); printChain(chain.getHead()); } } 运行main方法,即构造了一个包含10个node节点的链表...#运行结果 0 -> 1 -> 2 -> 3 -> 4 -> 5 -> 6 -> 7 -> 8 -> 9 2.通过递归实现链表反转 考虑到代码的简洁性,首先考虑的是通过递归实现。...cur.setNext(pre); head.setNext(null); return cur; } 4.借助stack实现 考虑到stack具有先进后出这一特性,因此可以借助于stack数据结构来实现单向链表反转

90821

面试必备|链表反转思路图形解析

01 — 链表 链表玩的是指针操作,非常容易出错,尽管看似很简单。...02 — 一种反转算法 我们试着将一个链表反转,定义Reverse(list) API,实现此功能,比如对上面那个简单的链表,执行Reverse后的效果如下所述,当然颜色我们没有反转。 ?...返回 newhead 03 — 反转算法图形显示 我们试着将一个链表反转,定义Reverse(list) API,实现此功能,比如对如下链表进行反转操作: ?...再次走一遍上述的过程后,节点3又添加到2--->1这个链表上,newhead依然指向反转后的链表的头部,反转后的链表:3-->2--->1....思路总结 next变量始终指向原链表的即将要添加到反转链表的节点, newhead始终指向反转链表的头。 每遍历一次,newhead增加一个节点,即next节点,直到next变为null为止。

1.7K50
领券