二个栈实现一个队列
//二个栈实现一个队列
type CQueue struct {
stack1, stack2 *list.List
}
//初始化
func Constructor() CQueue {
return CQueue{
stack1: list.New(),
stack2: list.New(),
}
}
//尾部插入(出栈)
func (this *CQueue) AppendTail(value int) {
this.stack1.PushBack(value)
}
//删除头部
func (this *CQueue) DeleteHead() int {
// 如果第二个栈为空
if this.stack2.Len() == 0 {
for this.stack1.Len() > 0 {
this.stack2.PushBack(this.stack1.Remove(this.stack1.Back()))
}
}
if this.stack2.Len() != 0 {
e := this.stack2.Back()
this.stack2.Remove(e)
return e.Value.(int)
}
return -1
}
链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof/solution/mian-shi-ti-09-yong-liang-ge-zhan-shi-xian-dui-l-3/