队列的定义
队列,和栈一样,也是一种对数据的"存"和"取"有严格要求的线性存储结构,与栈结构不同的是,队列的两端都"开口",要求数据只能从一端进,从另一端出。队列有两种存储方式,分别是顺序队和链队,今天实现的是链队。
结构的定义
队列需要两个指针定位对头和队尾的位置,所以定义方式如下所示。
// 代表每一个节点
type node struct {
data interface{
}
next *node
}
type queue struct {
// 头节点
head *node
// 队尾节点
rear *node
size int
sync.Mutex
}
队列的相关操作
初始化队列
func newQueue() *queue {
q := new(queue)
q.head = nil
q.rear = nil
q.size = 0
return q
}
创建一个心得队列对象,同时将头指针和尾指针全部置为nil