Files
4566704 80eb62cb08 feat(queue): 自 go-hua/queue 原样迁入链式队列
- 代码与测试不变,附 examples/queue 例程与包 README(含哨兵头结点 Pop 语义说明)
2026-09-20 12:20:51 +08:00

31 lines
1007 B
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 场景需外加拉锁。