【剑指offer】面试题24:反转链表
来源:互联网 发布:1024为熟知端口 编辑:程序博客网 时间:2024/06/03 19:37
完整代码地址
完整代码地址
题目
定义一个函数,输入一个链表的头结点,反转该链表并输出反转后链表的头结点
思路
很简单,单纯考察代码的鲁棒性
要针对区分成以下三种情况处理:
1.输入的链表头指针为null
2.输入的链表只有一个节点
3.输入的链表有多个节点(正常情况)
代码
public static class ListNode { public int val; public ListNode next = null; public ListNode(int val) { this.val = val; }}public static ListNode ReverseList(ListNode head) { // 长度为0或1 if(head == null || head.next == null) return head; ListNode first = head; ListNode second = head.next; head.next = null; ListNode third; while(second != null) { third = second.next; second.next = first; first = second; second = third; } return first;}
测试
public static void main(String[] args) { test1(); test2(); test3();}/** * 功能测试 */private static void test1() { ListNode node1 = new ListNode(1); ListNode node2 = new ListNode(2); ListNode node3 = new ListNode(3); ListNode node4 = new ListNode(4); node1.next = node2; node2.next = node3; node3.next = node4; // 4-3-2-1 node1 = _24_ReverseList.ReverseList(node1); printList(node1);}/** * 边界测试 * 长度为1 */private static void test2() { ListNode node1 = new ListNode(5); node1 = _24_ReverseList.ReverseList(node1); printList(node1);}/** * 极端测试 */private static void test3() { ListNode node1 = _24_ReverseList.ReverseList(null); printList(node1);}private static void printList(ListNode head) { ListNode cur = head; while(cur != null) { System.out.print(cur.val + " "); cur = cur.next; } System.out.println();}
阅读全文
0 0
- 《剑指Offer》面试题:反转链表
- 剑指offer面试题24:反转链表-java
- 剑指offer--面试题24:反转链表
- 【剑指offer】面试题 24:反转链表
- 【剑指offer】面试题24:反转链表
- offer面试题-----链表反转
- [剑指offer][面试题16]反转链表
- 【剑指offer】面试题16:反转链表
- 剑指offer 面试题16 反转链表
- 剑指Offer面试题16 反转链表
- 《剑指Offer》面试题16:反转链表
- 《剑指Offer》学习笔记--面试题16:反转链表
- 剑指offer 面试题16—反转链表
- 【剑指Offer学习】【面试题16 :反转链表】
- 【剑指Offer面试题】 九度OJ1518:反转链表
- 剑指offer面试题16-反转链表
- 剑指offer面试题16之反转链表
- 剑指offer:面试题16 反转链表
- iOS NSDictionary(字典)或者NSArray(数组)和JSON串的转换
- Hystrx权威指南--Hystrix隔离策略
- CentOS 7 安装 MySQL
- oracle服务器更改IP地址后,启动不了
- shell脚本编写中的#!shebang详解
- 【剑指offer】面试题24:反转链表
- vs2015 C# 和R语言并行开发
- 最短路径算法—Dijkstra(迪杰斯特拉)
- html 滑动卡顿问题
- IP 地址分类(A、B、C、D、E类)
- Mac开发,界面跳转
- 基于C++封装性的双向链表
- 悲观锁和相比synchronized,ReentrantLock增加了一些高级功能,主要有以下3项:等待可 中断、可实现公平锁,以及锁可以绑定多个条件
- 阿里云服务器CentOS6.8安装Tomcat