队列遵循 fifo 原则,提供 enqueue、dequeue 和 peek 操作;栈遵循 lifo 原则,提供 push、pop 和 peek 操作。队列用于任务队列,栈用于函数调用、递归和括号匹配。
Go 语言数据结构精解:掌握队列和栈的奥秘
前言
栈和队列是计算机科学中至关重要的数据结构,在各种应用中发挥着不可或缺的作用。在 Go 语言中,它们提供了强大的工具来管理数据并解决复杂的问题。本文将深入探讨 Go 语言中的栈和队列,提供清晰的解释、代码示例和实战案例,让你对这些数据结构有深入的理解。
队列
队列是一种遵循先入先出 (FIFO) 原则的线性数据结构。它的操作包括:
-
Enqueue():将一个元素添加到队列的末尾 -
Dequeue():从队列的开头移除一个元素 -
Peek():读取队列中第一个而不删除元素
代码示例:
type Queue []int
func (q *Queue) Enqueue(x int) {
*q = append(*q, x)
}
func (q *Queue) Dequeue() int {
if q.IsEmpty() {
panic("queue is empty")
}
x := (*q)[0]
*q = (*q)[1:]
return x
}
func (q *Queue) Peek() int {
if q.IsEmpty() {
panic("queue is empty")
}
return (*q)[0]
}
func (q *Queue) IsEmpty() bool {
return len(*q) == 0
}




