zoukankan      html  css  js  c++  java
  • 链表反转 (Multi-method)

    链表反转是链表相关问题最基础的知识,做完LeetCode中LinkedList后才会有这种体会,因为ACM算法中不会涉及这一部分。解决这一问题有多种方法,在面试中面试官通常也会要求写出多种。包括stack,iterative,以及recursive。

    (1) stack:

      a. 按顺序将节点push到stack中,next赋为NULL;

      b. 从stack中取节点依次链接。

      但是开了额外的空间,来不及多解释了,看下一个吧。

    (2) iterative:

      a. 创建根节点root;

      b. 依次将每个节点链到前一个节点;

      c. Notation Plz!!!把第一个节点链到NULL。否则你就等死吧 (双关) (^_^)

      但是代码写起来不是很爽,不够美,不海森(>_<)

    (3) recursive:

      THis's the part I wanna impress readers(^_*)!  ps(reader: 没事儿老拽什么英语。 偶: 电影Sherlock第二季第一集,被艾姐的魅力彻底征服。艾姐对卷毛说了一句: impress girl,“秀给姑娘看看”。于是卷毛在心动女神面前破解了“考文垂计划”,征服艾姐。一个字,帅。艾姐实在是把持不住自己的少女心,把手机密码设成"sher",导致…………reder: Stop!!!你还是别再博客园混了,去豆瓣吧。偶: OMG!!!串台了。不好意思。到哪了,哦递归,嘻嘻)。

      自己写了个递归,核心代码就两行。对于基础问题,我总认为,代码越简单越好,越简单就越容易被大脑封装,再解决复杂问题时才容易被调用。ps(还记得阿木在头文字D里说过这样一句话: 其实这个世界上本没有神,神也是人,只是大脑里封装了人记不住的方法,也便成了神。神也会犯错的哦…………reader: 我也是醉了,能不能把这哥们封了)。

      LinkNode* reverse(LinkNode* x, LinkNoe* &root) {            //root是创建的跟节点,head是所给链表的头节点

        if (x == NULL) return root;

        else return reverse(x->next, root)->next = x;

      }

      调用方法:

      reverse(head, root)->next = NULL; 

      

      

  • 相关阅读:
    zbb20181207 springboot @ConfigurationProperties使用
    zbb20181206 logback,lombok 默认日志logback配置解析
    Spring Boot (8) 全局异常处理
    Spring Boot (7) JdbcTemplate访问数据库
    Spring Boot (6) Spring Data JPA
    Spring Boot (4) 静态页面和Thymeleaf模板
    Spring Boot (3) 热部署devtools
    Spring Boot (2) Restful风格接口
    Spring Boot (1) 构建第一个Spring Boot工程
    idea使用maven搭建ssm框架实现登陆商品增删改查
  • 原文地址:https://www.cnblogs.com/wubdut/p/5578439.html
Copyright © 2011-2022 走看看