队列

2019-04-13  本文已影响0人  转相因

概述

队列是数据按照先进先出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.

上一篇 下一篇

猜你喜欢

热点阅读