S.top()://取出栈顶,返回栈顶元素
S.empty()://判断栈是否为空
S.push(x)://将x添加到栈
S.pop()://弹出栈顶
S.size()://栈的存储元素个数
#include <stdio.h>
#include <stack>
using namespace std;
int main()
{
std::stack<int>S;
if (S.empty()) {
printf("S is empty!\n");
}
S.push(5);
S.push(6);
S.push(10);
printf("S.top=%d\n", S.top());
S.pop();
S.pop();
printf("S.top=%d\n", S.top());
printf("S.size=%d\n", S.size());
system("pause");
return 0;
}
Q.empty()://判断队列是否为空
Q.front()://返回队列头部元素
Q.back()://返回队列尾部元素
Q.pop()://弹出队列头部元素
Q.push(x)://将x添加至队列
Q.size()://返回队列的存储元素的个数
#include <iostream>
#include <queue>
int main()
{
std::queue<int>Q;
if (Q.empty()) {
printf("Q is empty!\n");
}
Q.push(5);
Q.push(6);
Q.push(10);
printf("Q.front=%d\n", Q.front());
Q.pop();
Q.pop();
printf("Q.front=%d\n", Q.front());
Q.push(1);
printf("Q.back=%d\n", Q.back());
printf("Q.size=%d\n", Q.size());
system("pause");
return 0;
}
#include <queue>
class MyStack {
public: //临时队列,利用该队列进行原始data_queue元素与新元素的次序调换
MyStack() {
}
void push(int x) {
std::queue<int>temp_queue;
temp_queue.push(x);//对于新元素x的操作(图2)
while (!_data.empty()) {
temp_queue.push(_data.front());//只要data数据队列不为空,即循环(图3)
_data.pop();
}
while (!temp_queue.empty()) {//只要临时队列temp_queue不为空即循环(图4)
_data.push(temp_queue.front());
temp_queue.pop();
}
}
int pop() {
int x = _data.front();
_data.pop();
return x;
}
int top() {
return _data.front();
}
bool empty() {
return _data.empty();
}
private:
std::queue<int>_data;
};
int main()
{
MyStack S;
S.push(1);
S.push(2);
S.push(3);
S.push(4);
printf("%d\n", S.top());
S.pop();
printf("%d\n", S.top());
S.push(5);
printf("%d\n", S.top());
system("pause");
return 0;
}
输出
4
3
5