# [225. Implement Stack using Queues](https://leetcode.com/problems/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). ## 题目大意 题目要求用队列实现一个栈的基本操作:push(x)、pop()、top()、empty()。 ## 解题思路 按照题目要求实现即可。 ## 代码 ```go 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[0]) this.enque = this.enque[1:] } topEle := this.enque[0] this.enque = this.deque this.deque = nil return topEle } /** Get the top element. */ func (this *MyStack) Top() int { topEle := this.Pop() this.enque = append(this.enque, topEle) return topEle } /** Returns whether the stack is empty. */ func (this *MyStack) Empty() bool { if len(this.enque) == 0 { return true } return false } ```