
代码:
- in按顺序进栈
- out接受in按顺序弹栈的值
- 这时候,out中的值,按顺序弹栈就是,in进栈时的顺序
- 所以模拟队列时,如果out不为0,直接弹栈out就行
- 如果为0,则将in中的数据弹栈到out,再弹栈out
- 当然如果都为0,则return -1,意味着报错
type CQueue struct {
in, out []int
}
func Constructor() CQueue {
return CQueue{}
}
func (this *CQueue) AppendTail(value int) {
this.in = append(this.in, value)
}
func (this *CQueue) DeleteHead() int {
if len(this.out) == 0 {
if len(this.in) == 0 {
return -1
}
this.in2out()
}
value := this.out[len(this.out)-1]
this.out = this.out[:len(this.out)-1]
return value
}
func (this *CQueue) in2out() {
for len(this.in) > 0 {
this.out = append(this.out, this.in[len(this.in)-1])
this.in = this.in[:len(this.in)-1]
}
}