剑指offer3-从尾到头打印链表

题目描述

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。

思路:因为涉及到反向,所以我们使用栈。

将链表从头结点开始依次将val数值装入栈中,根据栈的后进先出原则,所以出栈的顺序就是链表从尾到头的顺序。

代码:

/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> array;
        ListNode* p = head;
        stack<int> S;
        while(p!=NULL)
        {
            S.push(p->val);
            p = p->next;
        }
        int len = S.size();
        for(int i=0;i<len;i++)
        {
            int temp = S.top();
            array.push_back(temp);
            S.pop();
        }
        
        return array;
        
    }
};
原文地址:https://www.cnblogs.com/loyolh/p/12859568.html