Golang算法模板-通过切片模拟栈和队列

71 阅读1分钟

切片模拟栈操作

func main() {
	stack := make([]int, 0)

	//入栈
	stack = append(stack, 5)

	//出栈
	val := stack[len(stack)-1]	
	stack = stack[:len(stack)-1]

	fmt.Println(val, len(stack) == 0)
}

切片模拟队列操作

方法1,不保留队列中的数据

func main() {
    queue := make([]int, 0)

    //入队
    queue = append(queue, 6)

    //出队
    val := queue[0]
    queue = queue[1:]

    fmt.Println(val, len(queue) == 0)
}

方法2,保留队列中的数据

func main() {
	queue := make([]int, 0)
	head, tail := 0, 0

	//入队
	queue = append(queue, 5)
	tail += 1

	//出队
	val := queue[head]
	head += 1
	
	//第2次入队
	queue = append(queue, 6)
	tail += 1

	//第2次出队
	val = queue[head]
	head += 1

	fmt.Println(val, len(queue))
}