当前位置: 首页 > news >正文

剑指offer面试题16 反转链表

考察点

链表

知识点

三指针遍历链表

题目

分析
关于链表的考点其实就是一个遍历问题,要么是双指针遍历,要么是三指针遍历,而三指针遍历往往是最前面的指针初始化为空,中间指针初始化为头结点,第三个指针初始化为头结点的next结点。类似这种题目我们往往需要通过归纳法的手段找出规律:假设链表a->b->c,现在要想改成a<-b,是不是需要先把c结点存起来,否则b到c的链路就断掉了,因为我们可以针对链表中每个结点重复此过程,直到尾结点,这里一定要注意尾结点的处理方式,找到尾结点以后需要把它变成头结点。

public class LinkNode {int val;LinkNode next;public LinkNode(int data) {this.val = data;this.next = null;}
}
public class LinkList {LinkNode head;public LinkList() {this.head = null;}public void reverseLink() {LinkNode pre = null;LinkNode cur = this.head;while (cur != null) {LinkNode next = cur.next;if (next == null) {this.head = cur;}cur.next = pre;pre = cur;cur = next;}}//添加元素public void addNode(int data) {LinkNode node = new LinkNode(data);if (this.head == null) {this.head = node;} else {LinkNode cur = this.head;while(cur.next != null) {cur = cur.next;}cur.next = node;}}//正序打印public void print() {LinkNode node = this.head;while(node != null) {System.out.print(node.val);System.out.print(" ");node = node.next;}System.out.println();}
}
public class Sixteen {public static void main(String[] args) {LinkList linklist = new LinkList();linklist.addNode(1);linklist.addNode(2);linklist.addNode(3);linklist.addNode(4);linklist.addNode(5);linklist.print();linklist.reverseLink();linklist.print();linklist = new LinkList();linklist.reverseLink();linklist.print();}
}

相关文章:

  • 【栈】150. 逆波兰表达式求值
  • 面向对象编程入门:掌握C++类的基础(1/3)
  • MCU中断控制
  • CSRNET图像修复,DNN
  • http协议与apache
  • STM32_ESP8266 连接阿里云 操作图解
  • CSS中伪元素和伪类的区别和作用?
  • Vue3实现带动画效果的tab栏切换
  • Elasticsearch:创建自定义 ES Rally tracks 的分步指南
  • C++结合Lambda表达式在函数内部实现递归
  • MapboxGL JS⽀持哪些地图样式和交互控件?
  • 「数据结构」哈希表2:实现哈希表
  • MySQL高级特性篇(7)-数据库版本控制与迁移
  • SpringSecurity安全框架
  • yolov5-tracking-xxxsort yolov5融合六种跟踪算法(一)--环境配置GPU版本
  • [Vue CLI 3] 配置解析之 css.extract
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • 【Redis学习笔记】2018-06-28 redis命令源码学习1
  • 【面试系列】之二:关于js原型
  • Akka系列(七):Actor持久化之Akka persistence
  • angular2 简述
  • conda常用的命令
  • Docker容器管理
  • hadoop集群管理系统搭建规划说明
  • java2019面试题北京
  • Js基础——数据类型之Null和Undefined
  • Linux链接文件
  • 目录与文件属性:编写ls
  • 融云开发漫谈:你是否了解Go语言并发编程的第一要义?
  • 微服务框架lagom
  • 无服务器化是企业 IT 架构的未来吗?
  • 用 Swift 编写面向协议的视图
  • 用jquery写贪吃蛇
  • d²y/dx²; 偏导数问题 请问f1 f2是什么意思
  • LIGO、Virgo第三轮探测告捷,同时探测到一对黑洞合并产生的引力波事件 ...
  • #1014 : Trie树
  • #我与Java虚拟机的故事#连载09:面试大厂逃不过的JVM
  • %check_box% in rails :coditions={:has_many , :through}
  • (70min)字节暑假实习二面(已挂)
  • (C语言)fread与fwrite详解
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (Python第六天)文件处理
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (待修改)PyG安装步骤
  • (附源码)计算机毕业设计ssm-Java网名推荐系统
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (剑指Offer)面试题34:丑数
  • (每日持续更新)jdk api之FileFilter基础、应用、实战
  • (转)拼包函数及网络封包的异常处理(含代码)
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • (轉貼)《OOD启思录》:61条面向对象设计的经验原则 (OO)
  • *ST京蓝入股力合节能 着力绿色智慧城市服务
  • ./configure,make,make install的作用
  • .net通用权限框架B/S (三)--MODEL层(2)
  • .NET中的十进制浮点类型,徐汇区网站设计