反转链表

题目描述

  输入一个链表,反转链表后,输出链表的所有元素。


思路

(本题链表默认无头结点)

  1. pHead为当前结点,如果当前结点为空的话,直接返回;
  2. pHead为当前结点,pre为当前结点的前一个结点,next为当前结点的下一个结点;
  3. 需要完成的目标是将pre-->pHead-->next1-->next2-->··· ···-->end反转为pre<--pHead<--next1<--next2<--··· ···<--end;
  4. pre结点可以用来反转方向,为了避免反转之后链表断开,用next结点暂时保存next1结点;
  5. 先用next保存pHead的下一个结点信息,保证单链表不会断裂;
  6. 保存之后,让pHead从指向next变成指向pre;
  7. 到此,完成了pre到pHead的反转,即pre<--pHead;
  8. 将pre,pHead,next依次向后移动一个结点。
  9. 循环操作,直到pHead为null,此时pre就是链表的最后一个结点,链表反转完毕,pre为反转后链表的第一个结点。
  10. 输出pre就是反转之后所得的链表。

实现代码

// 判断对象是否为空
function isEmptyObject(obj) {
for (var name in obj) {
return false;
}
return true;
} function ReverseList(pHead) {
if (isEmptyObject(pHead)) {
return false;
}
var pre = null;
var next = null;
while (pHead != null) {
next = pHead.next;
pHead.next = pre;
pre = pHead;
pHead = next;
}
return pre;
}

《剑指offer》— JavaScript(15)反转链表的更多相关文章

  1. 剑指offer六:反转链表

    输入一个链表,反转链表后,输出链表的所有元素 public class ListNode { int val; ListNode next = null; ListNode(int val) { th ...

  2. 剑指offer 16:反转链表

    题目描述 输入一个链表,反转链表后,输出新链表的表头. 解题思路 单链表原地反转是面试手撕代码环节非常经典的一个问题.针对一般单链表,反转的时候需要操作的是当前节点及与之相邻的其他两个节点.因而需要定 ...

  3. 剑指offer:从头到尾打印链表

    目录 题目 解题思路 具体代码 题目 题目链接 剑指offer:从头到尾打印链表 题目描述 输入一个链表,按链表值从尾到头的顺序返回一个ArrayList. 解题思路 首先题目实际给出的要求是返回ve ...

  4. 剑指Offer - 九度1517 - 链表中倒数第k个结点

    剑指Offer - 九度1517 - 链表中倒数第k个结点2013-11-30 02:57 题目描述: 输入一个链表,输出该链表中倒数第k个结点.(hint: 请务必使用链表.) 输入: 输入可能包含 ...

  5. 剑指 Offer 52. 两个链表的第一个公共节点 + 链表 + 第一个公共结点 + 双指针

    剑指 Offer 52. 两个链表的第一个公共节点 Offer_52 题目详情 题解分析 可以使用两个指针 node1,node2 分别指向两个链表 headA,headB 的头结点,然后同时分别逐结 ...

  6. 力扣 - 剑指 Offer 52. 两个链表的第一个公共节点

    题目 剑指 Offer 52. 两个链表的第一个公共节点 思路1(栈) 若两个链表相遇,则从它开始相遇的地方到链表末尾应该都是相同的,那么我们可以将两个链表分别放入两个栈中,然后依次循环比较两个栈顶的 ...

  7. 《剑指offer》两个链表中的第一个公共节点

    本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结:

  8. 【Java】 剑指offer(52) 两个链表的第一个公共结点

    本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集   题目 输入两个链表,找出它们的第一个公共结点. 思路 蛮力法:遍历第一个 ...

  9. Go语言实现:【剑指offer】两个链表的第一个公共结点

    该题目来源于牛客网<剑指offer>专题. 输入两个链表,找出它们的第一个公共结点. Go语言实现: //长度长的先走个长度差,然后ab一起比较后面结点 //长度一样,公共结点可能在首结点 ...

  10. 剑指offer(15)反转链表

    题目描述 输入一个链表,反转链表后,输出链表的所有元素. 题目分析 至少需要三个指针pPre(指向前一个结点).pCurrent(指向当前的结点,在代码中就是pHead).pPnext(指向后一个结点 ...

随机推荐

  1. 亚马逊的客户服务和承诺 - Delay in shipping your Amazon.com order - Missed Fulfillment Promise

    We encountered a delay in shipping your order. We apologize for the inconvenience. Since your packag ...

  2. MegaCli64/MegaCli命令详解

    基础命令学习目录首页 MegaCli64 -LDInfo -Lall -aALL这个命令能看到RAID的状态MegaCli64 -LDSetProp ForcedWB -L0 -a0MegaCli64 ...

  3. Django_cookie+session

    一.cookie和session介绍 cookie 由服务器产生内容,浏览器收到请求后保存在本地:当浏览器再次访问时,浏览器会自动带上cookie,这样服务器就能通过cookie的内容来判断这个是“谁 ...

  4. 升级Xcode 10 后报错问题记录([CP] Copy Pods Resources)

    1.升级Xcode到Version 10.0 (10A255)后,运行已有项目,报如下错误: error: Multiple commands produce '/Users/galahad/Libr ...

  5. 卸载CentOS7自带的OpenJDK

    http://blog.csdn.net/xiegh2014/article/details/52343438

  6. 【每日scrum】第一次冲刺day2

    和小伙伴一起找地图 ,学习了mapinfo地图格式的基本知识,数据和图像分开存储

  7. 【CSAPP笔记】1. 位、字节、整型

    <Computer Systems a Programmer's Perspective>,机械工业出版社.中文译名<深入理解计算机系统>.作者:(美)Randal E.Bry ...

  8. 16_常用API_第16天(正则表达式、Date、DateFormat、Calendar)_讲义

    今日内容介绍 1.正则表达式的定义及使用 2.Date类的用法 3.Calendar类的用法 ==========================================第一阶段======= ...

  9. OSG学习:裁剪变换(1)

    在OSG中,默认了6个裁剪平面以去除没有必要显示的物体.也可以自己定义其他的裁剪平面来确定裁剪. osg::ClipPlane类继承自osg::StateAttribute类,封装了OpenGL中的g ...

  10. mongodb的命令介绍

    db.help() 查看库级别的命令 db.stats() 查看数据库状态 db.version() 查看数据库版本 db.serverStatus() 查看数据库服务器状态 db.mycoll.he ...