0225. Implement Stack Using Queues

# 225. Implement Stack using Queues#

## 题目 #

Implement the following operations of a stack using queues.

• push(x) – Push element x onto stack.
• pop() – Removes the element on top of the stack.
• top() – Get the top element.
• empty() – Return whether the stack is empty.

Example:

``````
MyStack stack = new MyStack();

stack.push(1);
stack.push(2);
stack.top();   // returns 2
stack.pop();   // returns 2
stack.empty(); // returns false

``````

Note:

• You must use only standard operations of a queue – which means only push to back, peek/pop from front, size, and is empty operations are valid.
• Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.
• You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

## 代码 #

``````
package leetcode

type MyStack struct {
enque []int
deque []int
}

/** Initialize your data structure here. */
func Constructor225() MyStack {
return MyStack{[]int{}, []int{}}
}

/** Push element x onto stack. */
func (this *MyStack) Push(x int) {
this.enque = append(this.enque, x)
}

/** Removes the element on top of the stack and returns that element. */
func (this *MyStack) Pop() int {
length := len(this.enque)
for i := 0; i < length-1; i++ {
this.deque = append(this.deque, this.enque)
this.enque = this.enque[1:]
}
topEle := this.enque
this.enque = this.deque
this.deque = nil

}

/** Get the top element. */
func (this *MyStack) Top() int {
topEle := this.Pop()
this.enque = append(this.enque, topEle)

}

/** Returns whether the stack is empty. */
func (this *MyStack) Empty() bool {
if len(this.enque) == 0 {
return true
}

return false
}

`````` Oct 9, 2021 Edit this page