队列实现栈
class mystack {
public:
void push(int x) {
queue<int> temp_queue;
temp_queue.push(x);
while (!_data.empty())
{
temp_queue.push(_data.front());
_data.pop();
}
while (!temp_queue.empty())
{
_data.push(temp_queue.front());
temp_queue.pop();
}
}
void pop() {
_data.pop();
}
int top() {
return _data.front();
}
bool empty() {
return _data.empty();
}
private:
queue<int> _data;
};
栈实现队列
class myqueue {
public:
void push(int x) {
stack<int> temp_stack;
while (!_data.empty())
{
temp_stack.push(_data.top());
_data.pop();
}
while (!temp_stack.empty())
{
_data.push(temp_stack.top());
temp_stack.pop();
}
}
void pop() {
_data.pop();
}
int top() {
return _data.top();
}
bool empty() {
return _data.empty();
}
private:
stack<int> _data;
};
最小值栈
class MinStack {
public:
/** initialize your data structure here. */
MinStack() {
}
void push(int x) {
if(_data.empty())
{
_data.push(x);
_min.push(x);
return;
}
_data.push(x);
if(x<_min.top())
{
_min.push(x);
}
else
{
_min.push(_min.top());
}
}
void pop() {
_data.pop();
_min.pop();
}
int top() {
return _data.top();
}
int getMin() {
return _min.top();
}
private:
stack<int> _data;
stack<int> _min;
};
出栈顺序是否正确
计算器
堆
返回第K大得数
中位数