剑指offer系列之十四:反转链表
来源:互联网 发布:数据库nvl 编辑:程序博客网 时间:2024/05/25 13:33
题目描述
输入一个链表,反转链表后,输出链表的所有元素。
思路如下:在遍历链表上的每个节点的时候,就修改其指针,当遍历到最后一个结点的时候,整个链表就反转完成了。所以需要创建三个变量:一个是当前遍历的结点,一个是遍历结点的前一个结点,还有一个是当前遍历结点的下一个结点。基于这种思路可以写出如下的实现代码(已被牛客AC):
package com.rhwayfun.offer;public class ReverseLinkedList { public static class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public ListNode ReverseList(ListNode head) { //反转之后链表的头结点 ListNode reverseListHead = null; //当前遍历的结点 ListNode curNode = head; //遍历到的结点的前一个结点,该节点的作用让当前遍历到的指向其前一个结点 ListNode preNode = null; while(curNode != null){ //当前遍历结点的下一个结点 ListNode nextNode = curNode.next; if(nextNode == null) reverseListHead = curNode; curNode.next = preNode; preNode = curNode; curNode = nextNode; } return reverseListHead; } public static void main(String[] args) { ListNode head = new ListNode(1); ListNode node1 = new ListNode(2); ListNode node2 = new ListNode(3); ListNode node3 = new ListNode(4); ListNode node4 = new ListNode(5); head.next = node1; node1.next = node2; node2.next = node3; node3.next = node4; ListNode pHead = new ReverseLinkedList().ReverseList(head); while(pHead != null){ System.out.println(pHead.val); pHead = pHead.next; } }}
0 0
- 剑指offer系列之十四:反转链表
- 剑指offer之十四---反转链表
- 剑指offer系列之14:反转链表
- 剑指offer系列源码-反转链表
- 【剑指offer系列】 反转链表___16
- python 剑指offer系列:反转链表
- 剑指Offer之反转链表
- 剑指Offer之 - 反转链表
- 剑指offer之反转链表
- 【剑指offer】之反转链表
- 剑指offer(十二)之反转链表
- 剑指offer之反转链表
- 剑指offer 之 反转链表
- 剑指offer系列之二十四:复杂链表的复制
- 剑指Offer系列-面试题16:反转链表
- 【剑指offer-解题系列(15)】反转链表
- 剑指offer:反转链表
- 剑指offer--反转链表
- mysql输入中文乱码怎么解决
- uva 147 - Dollars 钱币兑换问题(浮点数) 精度问题 完全背包
- 关于子类对象生成的问题(抽空展开写一下)
- 简单演示对象间通过BLOCK回调修改属性的功能
- 【Html】CSS注释代码
- 剑指offer系列之十四:反转链表
- activity_main.xml不能预览问题
- 本文为原创文章,转载请标明出处
- std::array
- poj 1140 Expanding Fractions 除法模拟
- Centos6.764位 安装apache
- linux 下mysql 主从数据库
- 快速排序算法
- light oj 1043 Triangle Partitioning