在将一个元素 x 插入队列时,为了维护原来的后进先出顺序,需要让 x 插入队列首部。而队列的默认插入顺序是队列尾部,因此在将 x 插入队列尾部之后,需要让除了 x 之外的所有元素出队列,再入队列。
用数组模拟队列,用一个队列实现栈
js代码:
var MyStack = function () {
this.queue = []
};
MyStack.prototype.push = function (x) {
return this.queue.push(x)
};
MyStack.prototype.pop = function () {
const position = this.queue.length - 1
let index = 0
while (index < position) {
this.queue.push(this.queue.shift())
index++
}
return this.queue.shift()
};
MyStack.prototype.top = function () {
const data = this.pop()
this.queue.push(data)
return data
};
MyStack.prototype.empty = function () {
return this.queue == 0
};
java代码实现:
class MyStack {
private Queue<Integer> queue;
public MyStack() {
queue = new LinkedList<>();
}
public void push(int x) {
queue.add(x);
int cnt = queue.size();
while (cnt-- > 1) {
queue.add(queue.poll());
}
}
public int pop() {
return queue.remove();
}
public int top() {
return queue.peek();
}
public boolean empty() {
return queue.isEmpty();
}
}
|