package main
import "fmt"
/**
队列:
基本操作是入队(Enqueue),在表的末端插入一个元素
出队(Dequeue),删除(或返回)在表头的元素
*/
type Item interface {}
// 队列结构体
type Queue struct {
Items []Item
}
type IQueue interface {
New() Queue
Enqueue(t Item)
Dequeue(t Item)
IsEmpty() bool
Size() int
}
// 新建
func (q *Queue)New() *Queue {
q.Items = []Item{}
return q
}
// 入队
func (q *Queue) Enqueue(data Item) {
q.Items = append(q.Items, data)
}
// 出队
func (q *Queue) Dequeue() *Item {
// 由于是先进先出,0为队首
item := q.Items[0]
q.Items = q.Items[1: len(q.Items)]
return &item
}
// 队列是否为空
func (q *Queue) IsEmpty() bool {
return len(q.Items) == 0
}
// 队列长度
func (q *Queue) Size() int {
return len(q.Items)
}
var q Queue
func initQueue() *Queue {
if q.Items == nil{
q = Queue{}
q.New()
}
return &q
}
func main() {
q := initQueue()
fmt.Println("length:", q.Size())
q.Enqueue("a")
q.Enqueue(1)
fmt.Println("length:", q.Size())
fmt.Println(q)
tmp := q.Dequeue()
fmt.Println("出队:", *tmp)
}
go实现队列
猜你喜欢
转载自blog.csdn.net/u010918487/article/details/86989128
今日推荐
周排行