思路
题目要求使用队列来模拟栈操作,实现一个栈数据结构,我用的是单队列。
push()在栈顶添加元素,即在队尾添加元素。
pop()删除栈顶,旋转队列实现栈的后进先出特性。
top()查询栈顶,直接返回队尾元素。
empty()检查栈是否为空,即检查队列是否为空。
时间复杂度较高但空间复杂度为O(n)。
代码
int q[10010],s=1,w=0;
MyStack() {
}
void push(int x) {
w++;
q[w]=x;
}
int pop() {
int x=top();
for(int i=1;i<=w-s;i++) {
w++;
q[w]=q[s];
s++;
}
s++;
return x;
}
int top() {
return q[w];
}
bool empty() {
if(w-s<0) {
return 1;
}
return 0;
}
};



