AdventOfCode2021/shared/Queue.go

30 lines
349 B
Go
Raw Permalink Normal View History

package shared
type Queue struct {
Head *Node
Tail *Node
}
func (q *Queue) Pop() (node *Node) {
node = nil
if q.Head != nil {
node = q.Head
q.Head = q.Head.Next
if q.Head == nil {
q.Tail = nil
}
}
return
}
func (q *Queue) Add(node *Node) {
if q.Tail != nil {
q.Tail.Next = node
} else {
q.Head = node
}
q.Tail = node
}