c++中的头文件
#include<stack>
#include<queue>
队列的功能:
q.empty() 如果队列为空返回true,否则返回false
q.size() 返回队列中元素的个数
q.pop() 删除队列首元素但不返回其值
q.front() 返回队首元素的值,但不删除该元素
q.push() 在队尾压入新元素
q.back() 返回队列尾元素的值,但不删除该元素
栈的功能:
s.empty() 如果栈为空返回true,否则返回false
s.size() 返回栈中元素的个数
s.pop() 删除栈顶元素但不返回其值
s.top() 返回栈顶的元素,但不删除该元素
s.push() 在栈顶压入新元素
可以看到,队列和栈都有empty(),size()的功能
队列实现栈的功能:
栈的top就是队列的front,pop和出队相同,也就是说,我们只需要实现push功能
栈的push功能就是让队列实现在队首加入元素,这就需要两个队列q1,q2,函数让q2将要push的值先入队,再让所有q1中的元素都出队并加入到q2中,最后返回q2
queue<int> push(queue<int>q1) {
queue<int> q2;
q2.push(val);
while(!q1.isempty()) {
int temp = q1.front();
q1.pop();
q2.push(temp);
}
return q2;
}
栈要实现队列的back()和push()两个函数
back的实现就是完全复制一个栈,最后一个出栈的元素就是队列back()返回的值
push()的实现就是让栈实现在栈底加入元素,让所有元素都出来后让目标元素先入栈,再把所有元素入栈