1007 B
1007 B
queue
基于链表实现的先进先出队列(哨兵头结点风格)。
迁移自 go-hua/queue,代码保持原样。
用法
import "git.zeroonesoft.cn/golib/zogo/queue"
// 头结点作为哨兵,Create 批量建队
q := &queue.QueueNode{}
q.Create(1, 2, 3)
q.Length() // 3
// Push 入列(追加队尾)/ Pop 出队
q.Push(4)
v := q.Pop() // 在头结点上调用:返回头结点自身 Data(哨兵为 nil),队列前进一个节点
q.Print() // 打印剩余元素
完整可运行例程:examples/queue/main.go
注意
Pop语义特殊:在哨兵头结点上调用,返回的是哨兵自身的Data(通常为 nil) 并让队列前进一格;取真正的队头元素请在q.Next上调用或先取q.Next.Data。Pop在队列仅剩哨兵(Next == nil)时调用会 panic,出队前先判断Length()。- 元素为
interface{},非泛型非并发安全,多 goroutine 场景需外加拉锁。