Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

225. 用队列实现栈 #5

Open
yankewei opened this issue Feb 28, 2020 · 0 comments
Open

225. 用队列实现栈 #5

yankewei opened this issue Feb 28, 2020 · 0 comments
Labels
题目包含栈解法 简单 题目难度为简单 设计 题目类型为设计

Comments

@yankewei
Copy link
Owner

使用队列实现栈的下列操作:

  • push(x) -- 元素 x 入栈
  • pop() -- 移除栈顶元素
  • top() -- 获取栈顶元素
  • empty() -- 返回栈是否为空

注意:

你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。
你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。
你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-stack-using-queues

// 可以借助go语言自带的container/list结构来完成
type MyStack struct {
    list *list.List
}

/** Initialize your data structure here. */
func Constructor() MyStack {
    return MyStack{list : list.New()}
}

/** Push element x onto stack. */
func (this *MyStack) Push(x int)  {
    this.list.PushBack(x)
}

/** Removes the element on top of the stack and returns that element. */
func (this *MyStack) Pop() int {
    // 这里注意需要返回值是一个int,但list结构返回的是一个interface{},所以我需要进行类型转换
    // 具体的可以参考https://golang.org/ref/spec#Type_assertions
    return this.list.Remove(this.list.Back()).(int)
}

/** Get the top element. */
func (this *MyStack) Top() int {
    return this.list.Back().Value.(int)
}

/** Returns whether the stack is empty. */
func (this *MyStack) Empty() bool {
    return this.list.Len() == 0
}

/**
 * Your MyStack object will be instantiated and called as such:
 * obj := Constructor();
 * obj.Push(x);
 * param_2 := obj.Pop();
 * param_3 := obj.Top();
 * param_4 := obj.Empty();
 */
@yankewei yankewei added 简单 题目难度为简单 题目包含栈解法 设计 题目类型为设计 labels Feb 28, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
题目包含栈解法 简单 题目难度为简单 设计 题目类型为设计
Projects
None yet
Development

No branches or pull requests

1 participant