zoukankan      html  css  js  c++  java
  • 《剑指offer3- 从末尾到头打印链表》

    题目描述

    输入一个链表,按链表值从尾到头的顺序返回一个ArrayList。
     
    本质上是逆转链表
     
    /**
    *  struct ListNode {
    *        int val;
    *        struct ListNode *next;
    *        ListNode(int x) :
    *              val(x), next(NULL) {
    *        }
    *  };
    */
    class Solution {
    public:
        vector<int> printListFromTailToHead(ListNode* head) {
            vector<int> list;
            head = this->reverseList(head);
            while(head){
                list.push_back(head->val);
                head = head->next;
            }
            return list;
        }
        
    
        
        ListNode* reverseList(ListNode* head){
            if(!head || !head->next){
                return head;
            }
            ListNode* last = NULL;
            while(head){
                ListNode* next = this->reverseNode(last, head);
                last = head;
                head = next;
            }
            return last;
        }
        
        ListNode* reverseNode(ListNode* last, ListNode* cur){
            ListNode* next = cur->next;
            cur->next = last;
            return next;
        }
        
        //递归的方式会导致堆栈溢出
        void dumpListReverse(ListNode* head, vector<int> &list){
            
            if(!head && !head->next)
            {
                this->dumpListReverse(head->next, list);
            }
            list.push_back(head->val);
        }
    };
    

      

  • 相关阅读:
    AcWiing 翻硬币
    AcWing 飞行员兄弟 二进制枚举
    AcWing 费解的开关 二进制枚举
    vue发送短信逻辑
    使用celery异步发送短信
    celery配置与基本使用
    celery原理与组件
    短信验证接口
    图片验证码接口
    编写注册接口
  • 原文地址:https://www.cnblogs.com/doudouyoutang/p/9898034.html
Copyright © 2011-2022 走看看