30 lines
349 B
Go
30 lines
349 B
Go
|
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
|
||
|
}
|