zoukankan      html  css  js  c++  java
  • 《剑指offer》— JavaScript(15)反转链表

    反转链表

    题目描述

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


    思路

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

    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;
    }
    
  • 相关阅读:
    中文转数字
    半角全角互转
    sql快速查记录数
    杀进程批处理
    线程基本用法
    sql游标用法示例
    BUGFREE的使用
    SQL常用函数
    ASP.NET 2.0 下的验证码控件
    经典sql语句
  • 原文地址:https://www.cnblogs.com/echovic/p/6430681.html
Copyright © 2011-2022 走看看