队列(Queue)是先进先出的一种数据结构。
Queue接口与List、Set同一级别,都是继承了Collection接口。LinkedList实现了Queue接口。
首先,将队列作为自己的属性。
class MyStack {
Queue<Integer> queue;
/**
* Initialize your data structure here.
*/
public MyStack() {
queue = new LinkedList<>();
}
}
1.用队列实现入栈操作
栈是先进后出的数据结构。
入栈首先将元素插入到队列中,由于队列是先进先出,故元素插在队列末尾。此时,采用将队列中元素一边删除一边插入到队列,删除是从队头删除,插入是在队尾插入。
public void push(int x) {
queue.add(x);
for(int i = 1; i < queue.size(); i++)
queue.add(queue.remove());
}
2.队列实现出栈操作
public int pop() {
return queue.poll();
}
3.取栈顶元素
public int top() {
return queue.peek();
}
4.判断栈是否为空
public boolean empty() {
return queue.size() == 0;
}
完整代码如下
class MyStack {
Queue<Integer> queue;
/**
* Initialize your data structure here.
*/
public MyStack() {
queue = new LinkedList<>();
}
/** Push element x onto stack. */
public void push(int x) {
queue.add(x);
for(int i = 1; i < queue.size(); i++)
queue.add(queue.remove());
}
/** Removes the element on top of the stack and returns that element. */
public int pop() {
return queue.poll();
}
/** Get the top element. */
public int top() {
return queue.peek();
}
/** Returns whether the stack is empty. */
public boolean empty() {
return queue.size() == 0;
}
}