输入一个链表,从尾到头打印链表每个节点的值。
思路: 遍历整个链表,依次入栈。遍历结束后,再一次出栈即可。
Java代码如下:
import java.util.ArrayList; import java.util.Stack; class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; } } public class Solution { public ArrayList<Integer> printListFromTailToHead(ListNode listNode) { Stack<Integer> stack = new Stack<Integer>(); ArrayList<Integer> list = new ArrayList<Integer>(); while(listNode != null){ stack.add(listNode.val); listNode = listNode.next; } while(!stack.isEmpty()){ list.add(stack.pop()); } return list; } }C++代码如下:
#include <vector> #include <stack> 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) { stack<int> s; vector<int> list; ListNode *p = head; while(p){ s.push(p->val); p = p->next; } while(!s.empty()){ list.push_back(s.top()); s.pop(); } return list; } }; ---来自腾讯云社区的---AI那点小事
微信扫一扫打赏
支付宝扫一扫打赏