Update 0232.用栈实现队列.md

about go版本
This commit is contained in:
FlySmile
2022-11-26 20:01:38 +08:00
committed by GitHub
parent 067c25f616
commit b486f8dc20

View File

@ -231,51 +231,51 @@ class MyQueue:
Go Go
```Go ```Go
type MyQueue struct { type MyQueue struct {
stackIn []int //输入栈 stackIn []int //输入栈
stackOut []int //输出栈 stackOut []int //输出栈
} }
func Constructor() MyQueue { func Constructor() MyQueue {
return MyQueue{ return MyQueue{
stackIn: make([]int, 0), stackIn: make([]int, 0),
stackOut: make([]int, 0), stackOut: make([]int, 0),
} }
} }
// 往输入栈做push // 往输入栈做push
func (this *MyQueue) Push(x int) { func (this *MyQueue) Push(x int) {
this.stackIn = append(this.stackIn, x) this.stackIn = append(this.stackIn, x)
} }
// 在输出栈做poppop时如果输出栈数据为空需要将输入栈全部数据导入如果非空则可直接使用 // 在输出栈做poppop时如果输出栈数据为空需要将输入栈全部数据导入如果非空则可直接使用
func (this *MyQueue) Pop() int { func (this *MyQueue) Pop() int {
inLen, outLen := len(this.stackIn), len(this.stackOut) inLen, outLen := len(this.stackIn), len(this.stackOut)
if outLen == 0 { if outLen == 0 {
if inLen == 0 { if inLen == 0 {
return -1 return -1
} }
for i := inLen - 1; i >= 0; i-- { for i := inLen - 1; i >= 0; i-- {
this.stackOut = append(this.stackOut, this.stackIn[i]) this.stackOut = append(this.stackOut, this.stackIn[i])
} }
this.stackIn = []int{} //导出后清空 this.stackIn = []int{} //导出后清空
outLen = len(this.stackOut) //更新长度值 outLen = len(this.stackOut) //更新长度值
} }
val := this.stackOut[outLen-1] val := this.stackOut[outLen-1]
this.stackOut = this.stackOut[:outLen-1] this.stackOut = this.stackOut[:outLen-1]
return val return val
} }
func (this *MyQueue) Peek() int { func (this *MyQueue) Peek() int {
val := this.Pop() val := this.Pop()
if val == -1 { if val == -1 {
return -1 return -1
} }
this.stackOut = append(this.stackOut, val) this.stackOut = append(this.stackOut, val)
return val return val
} }
func (this *MyQueue) Empty() bool { func (this *MyQueue) Empty() bool {
return len(this.stackIn) == 0 && len(this.stackOut) == 0 return len(this.stackIn) == 0 && len(this.stackOut) == 0
} }
``` ```