feat(queue): 自 go-hua/queue 原样迁入链式队列

- 代码与测试不变,附 examples/queue 例程与包 README(含哨兵头结点 Pop 语义说明)
This commit is contained in:
2026-09-20 12:20:51 +08:00
parent 75f0b78d52
commit 80eb62cb08
4 changed files with 198 additions and 0 deletions
+30
View File
@@ -0,0 +1,30 @@
# queue
基于链表实现的先进先出队列(哨兵头结点风格)。
> 迁移自 go-hua/queue,代码保持原样。
## 用法
```go
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](../examples/queue/main.go)
## 注意
- `Pop` 语义特殊:在**哨兵头结点**上调用,返回的是哨兵自身的 `Data`(通常为 nil)
并让队列前进一格;取真正的队头元素请在 `q.Next` 上调用或先取 `q.Next.Data`。
- `Pop` 在队列仅剩哨兵(`Next == nil`)时调用会 panic,出队前先判断 `Length()`。
- 元素为 `interface{}`,非泛型非并发安全,多 goroutine 场景需外加拉锁。