概述
队列是数据按照先进先出FIFO原则组成的集合,类比排队,在队列一端添加元素,从对应的另一端删除元素
队列的实现
New() // 生成队列的构造器
Enqueue() //入队
Dequeue() //出队
Front() //队首元素
IsEmpty() //队列是否为空
Size() //队列大小
代码实现
package queue
import "sync"
type Item interface{}
type Queue struct {
items []Item
lock sync.RWMutex
}
//创建队列
func New() *Queue {
return &Queue{}
}
//入队列
func (q *Queue) Enqueue(t Item) {
q.lock.Lock()
defer q.lock.Unlock()
q.items = append(q.items, t)
}
//出队列
func (q *Queue) Dequeue() Item {
q.lock.Lock()
defer q.lock.Unlock()
item := q.items[0]
q.items = q.items[1:len(q.items)]
return item
}
//获取队列的第一个元素
func (q *Queue) Front() *Item {
q.lock.Lock()
defer q.lock.Unlock()
item := q.items[0]
return &item
}
// 判空
func (q *Queue) IsEmpty() bool {
return len(q.items) == 0
}
// 获取队列的长度
func (q *Queue) Size() int {
return len(q.items)
}
测试用例: queue_test.go.
网友评论