LeetCode一道链表倒置题目
struct ListNode {
int val;
ListNode *next;
ListNode(int x) : val(x), next(NULL) {}
};
class Solution {
public:
vector<int> reversePrint(ListNode* head) {
vector<int> ans;
stack<int> s;
if(head == NULL)
{
return ans;
}
ListNode *p = head;
while(p)
{
s.push(p->val);
p = p->next;
}
while (!s.empty())
{
// int a = s.pop();
int a = s.top();
s.pop();
ans.push_back(a);
}
return ans;
}
};
用到栈stack的pop()时,一开始写成
int a = s.pop();
报错error: cannot initialize a variable of type 'int' with an rvalue of type 'void'
因为pop()只负责清除栈顶元素,不负责返回,所以返回void
应该先top()写出,再pop()弹出
题目
关于链表倒置,可以采用栈的先进后出特性
C++ vector、stack
vector为容器,相当于动态数组
stack为栈
使用其STL工具时都应引入头文件