剑指offer,链表倒输出,综合vector,stack
剑指offer,链表倒输出
- 知识点扩充:
1.向量vector: 在使用它时, 需要包含头文件 vector, #include<vector> </vector>
vector<int> a ; //声明一个int型向量 vector<int> a(10) ; //声明一个初始大小为10的向量
常用函数
void push_back(elementType element)//追加一个元素到向量 void pop_back()//删除向量的最后一个元素 unsigned const size()//返回向量中元素的个数 elementType const at(int index)//返回指定位置的元素 bool const empty()//如果向量为空返回真 void clear()//删除向量中所有元素 void swap(vector v)//交换此向量与另一个向量v的内容
2.使用标准库的栈和队列时,先包含相关的头文件
#include<stack> #include<queue>
定义栈如下:
stack<int> stk;
定义队列如下:
queue<int> q;
栈提供了如下的操作
s.empty() 如果栈为空返回true,否则返回false s.size() 返回栈中元素的个数 s.pop() 删除栈顶元素但不返回其值 s.top() 返回栈顶的元素,但不删除该元素 s.push() 在栈顶压入新元素
队列提供了下面的操作
q.empty() 如果队列为空返回true,否则返回false q.size() 返回队列中元素的个数 q.pop() 删除队列首元素但不返回其值 q.front() 返回队首元素的值,但不删除该元素 q.push() 在队尾压入新元素 q.back() 返回队列尾元素的值,但不删除该元素
- 结果初版:
class Solution { public: vector<int> printListFromTailToHead(ListNode* head) { vector<int> a; stack<int> b; while(head) { b.push(head->val); head=head->next; } while(!b.empty()) { a.push_back(b.top()); b.pop(); } return a; } };