题目 : 输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
思路 : 既然是从尾到头,就用一个栈来中转数据
1、java版本
class Solution{
public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
ArrayList<Integer> res = new ArrayList<>();
Stack<Integer> stack = new Stack<>();
while (listNode != null) {
stack.push(listNode.value);
listNode = listNode.next;
}
while (!stack.empty()) {
res.add(stack.pop());
}
return res;
}
}
class ListNode {
int value;
ListNode next;
public ListNode(int x) {
value = x;
}
}
2、c++版本
//
// Created by stephen on 2021/3/13.
//
#include <vector>
#include <algorithm>
using namespace std;
struct ListNode {
int val;
struct ListNode *next;
ListNode(int x) :
val(x), next(NULL) {
}
};
class Solution {
public:
vector<int> printListFromTailToHead(ListNode *head) {
vector<int> res;
while (head){
res.push_back(head->val);
head = head->next;
}
reverse(res.begin(),res.end());
return res;
}
};