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;
    }
    
  • 相关阅读:
    spring快速入门
    Vue整合ElementUI搭建项目
    .Net的Rsa解密
    Maven配置国内仓库
    pom.xml
    SpringBoot文件打包后修改配文件
    .net 过滤器
    c#语法糖汇总
    git修改远程地址
    abp Application层,接口服务层,获取请求的信息
  • 原文地址:https://www.cnblogs.com/echovic/p/6430681.html
Copyright © 2011-2022 走看看