剑指offer面试16 反转链表
来源:互联网 发布:c语言入门免费书籍 编辑:程序博客网 时间:2024/05/19 12:24
一、题目
定义一个函数,输入一个链表,反转链表后,输出反转后链表的头结点。
二、思考与分析
为了正确地反转一个链表,需要调整链表中指针的方向,需要借助3个指向相邻结点的指针,因为在调整链表指针方向时,会使链表断裂,如果不使多一个指针来记录断裂后的链表,就没有办法实现反转整个链表的功能。
- 输入的一个完整链表
- 初始化三个指针,pre指针指向null,current指针指向头结点,pos指针指向null。
- 开始循环,pos指向current指针的下一个结点,在反转链表的指针方向时,保存链表断开的结点,将current的指针方向反转,指向pre指针。
- 直到pos指针指向null时,循环结束,此时pre指针所指向的结点,正是反转之后链表的头结点。
三、代码实现
提高代码的鲁棒性,反问自己:
* 输入的链表头指针为NULL或整个链表只有一个结点,程序是否有处理?
* 反转后的链表出现断裂的情况,程序是否有处理?
* 返回的反转链表的头结点是否为原始链表的头结点?
public ListNode ReverseList(ListNode head) { if(head == null){ return null; } ListNode pre = null; ListNode current = head; ListNode pos = null; while (current != null) { pos = current.next; current.next = pre; pre = current; current = pos; if(pos == null){ break; } } return pre; }
温馨提示:
自己多花时间找出问题并修正问题,比在面试官找出问题之后再去慌慌张张修改代码要好得多。
阅读全文
0 0
- 剑指offer面试16 反转链表
- 剑指offer-3-面试16:反转链表
- 剑指offer 16- 反转链表
- 16链表的反转|剑指offer
- 剑指Offer 16 反转链表
- 剑指offer-16:反转链表
- 【剑指offer】题16:反转链表
- 剑指offer 16 反转链表
- 剑指offer:反转链表
- 剑指offer--反转链表
- 剑指offer--反转链表
- 剑指Offer-反转链表
- 《剑指offer》反转链表
- 剑指 offer:反转链表
- 剑指offer-反转链表
- 剑指offer 反转链表
- 剑指offer-反转链表
- 剑指offer:反转链表
- OpenCV自学笔记10:视频中分割出圆形
- 分布式环境Session处理问题
- 各主流浏览器内核介绍
- dubbo 2标签解析 ServiceBean<T> 生产者服务暴漏过程
- Linux (centos7) 防火墙命令
- 剑指offer面试16 反转链表
- 基于C#制作的狼人游戏介绍
- dubbo 3 ReferenceBean<T>消费者端初始化过程
- HTML option排序功能
- java后台下载文件
- 【数据结构实验五】二叉树
- STM32 常用知识初探
- Django随笔记-1
- hash 分表