题目: 输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
题解思路:
方法一:satck+vector+双遍历 遍历链表,将链表的元素的值放入栈中,再将栈中的元素放入数组中。 注意:这里stack存的是链表元素的值。 stack< int >s;
函数代码:
class Solution { public: vector<int> reversePrint(ListNode* head) { vector<int>res; if(!head) { return res; //这样也可以 return vector<int>(0); } ListNode *p=head; stack<int>s; while(p) { int x=p->val; s.push(x); p=p->next; } while(!s.empty()) { res.push_back(s.top()); s.pop(); } return res; } };方法二:栈+数组 遍历链表,将链表元素放入栈中,栈存放的是链表;再遍历链表,通过栈把值输出到数组中。
注意:这个stack存的链表元素。*stack<ListNode >s;
函数代码二:
class Solution { public: vector<int> reversePrint(ListNode* head) { vector<int>res; if(!head) { return res; //return vector<int>(0); } ListNode *p=head; stack<ListNode *>s; while(p) { s.push(p); p=p->next; } while(!s.empty()) { res.push_back(s.top()->val); s.pop(); } return res; } };