题目:
输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
分析:
很简单的一道题,其实也就是从尾到头打印链表,题目要求返回ArrayList,其实也就是一个数组。
可以将链表中的元素全部压入栈中,再从栈中依次弹出元素,就可以得到倒序的链表输出。
当然也可以直接将链表中元素传入数组中,最后再翻转数组即可。
程序:
C++
//use stack class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { stack<int> st; vector<int> res; while(head != nullptr){ st.push(head->val); head = head->next; } while(!st.empty()){ res.push_back(st.top()); st.pop(); } return res; } };
Java
//use reverse import java.util.ArrayList; import java.util.Collections; public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { ArrayList<Integer> res = new ArrayList<>(); while(listNode != null){ res.add(listNode.val); listNode = listNode.next; } Collections.reverse(res); return res; } }