1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
| package main
import "fmt"
type MyQueue struct { inStack \[\]int outStack \[\]int }
func Constructor() MyQueue { return MyQueue{} }
func (q *MyQueue) Enqueue(x int) { q.inStack = append(q.inStack, x) }
func (q *MyQueue) Dequeue() int { if len(q.outStack) == 0 { q.transfer() }
if len(q.outStack) == 0 { return 0 }
val := q.outStack\[len(q.outStack)-1\] q.outStack = q.outStack\[:len(q.outStack)-1\] return val }
func (q *MyQueue) transfer() { for len(q.inStack) > 0 { q.outStack = append(q.outStack, q.inStack\[len(q.inStack)-1\]) q.inStack = q.inStack\[:len(q.inStack)-1\] } }
func main() { queue := Constructor()
queue.Enqueue(1) queue.Enqueue(2) queue.Enqueue(3)
fmt.Println(queue.Dequeue()) fmt.Println(queue.Dequeue())
queue.Enqueue(4)
fmt.Println(queue.Dequeue()) fmt.Println(queue.Dequeue()) }
|