zoukankan      html  css  js  c++  java
  • 剑指 Offer 06. 从尾到头打印链表

    题意

    就是题目的字面意思

    思路

    • 1⃣️不修改链表结构的话只能从头往后遍历,而输出是反的,结合栈的特性,可以利用栈来实现。我这里用的是vector + reverse()
    • 2⃣️遍历顺序和输出顺序相反 + 用到栈。还可以联想到递归

    代码(栈)

    class Solution {
    public:
        vector<int> reversePrint(ListNode* head) {
            ListNode* cur = head;
            vector<int> ans;
            while(cur != NULL) {
                ans.emplace_back(cur->val);
                cur = cur->next;
            }
            reverse(ans.begin(), ans.end());
            return ans;
        }
    };
    

    代码(递归)

    class Solution {
    public:
        vector<int> ans;
        void dfs(ListNode* cur) {
            if(cur->next == NULL) {
                ans.emplace_back(cur->val);
                return;
            }
            dfs(cur->next);
            ans.emplace_back(cur->val);
        }
        vector<int> reversePrint(ListNode* head) {
            if(head == NULL) {
                return {};
            }
            dfs(head);
            return ans;
        }
    };
    
  • 相关阅读:
    List三个子类的特点
    三种迭代是否可以删除
    Vector
    LinkedList
    ArrayList
    ListIterator
    ConcurrentModificationException并发修改异常
    List
    Collection
    数组转换成集合
  • 原文地址:https://www.cnblogs.com/MartinLwx/p/14273033.html
Copyright © 2011-2022 走看看