type CQueue struct {
stackA []int
stackB []int
}
func Constructor() CQueue {
return CQueue{}
}
func (c *CQueue) AppendTail(value int) {
c.stackA = append(c.stackA, value)
}
func (c *CQueue) DeleteHead() int {
if len(c.stackB) == 0 {
if len(c.stackA) == 0 {
return -1
}
for top := len(c.stackA) - 1; top >= 0; top-- {
c.stackB = append(c.stackB, c.stackA[top])
}
c.stackA = c.stackA[:0]
}
top := len(c.stackB) - 1
value := c.stackB[top]
c.stackB = c.stackB[:top]
return value
}
用两个栈实现一个队列
于 2021-10-12 09:28:58 首次发布