队列(Queue)
队列(Queue
),从其名称就可以理解到,这是和我们排队买票类似的一种数据结构,遵循先进先出(FIFO)的模式。
// Element 元素
type Element struct {
item interface{}
next *Element
}
// Queue 队列
type Queue struct {
first, last *Element
size uint
}
// Len Return the stack's length
func (q *Queue) Len() uint {
return q.size
}
//IsEmpty 栈是否为空
func (q *Queue) IsEmpty() bool {
return q.Len() == 0
}
// EnQueue 队尾添加元素
func (q *Queue) EnQueue(item interface{}) {
oldlast := q.last
q.last = &Element{item, nil}
if q.IsEmpty() {
q.first = q.last
} else {
oldlast.next = q.last
}
q.size++
}
// DeQueue 队首取出元素
func (q *Queue) DeQueue() (item interface{}) {
if q.IsEmpty() {
item = nil
} else {
item = q.first.item
q.first = q.first.next
q.size--
}
return item
}