使用数组、队列实现简单的队列能力
- Top() 返回队列第一个元素
- Add() 入队
- Remove(data int) 出队
package main
func main() {
lq := NewListQueue()
lq.Add(10)
lq.Add(20)
lq.Add(25)
lq.Add(30)
lq.Add(100)
lq.Remove()
lq.Remove()
lq.Remove()
lq.Remove()
fmt.Println(lq.size)
lq.Add(123)
fmt.Println(lq.size)
fmt.Println(lq.Top())
}
type Queue interface {
Top() int
Add() int
Remove(data int)
}
type ListQueue struct {
data []int
size int
lock sync.Mutex
}
type LinkQueue struct {
root *LinkNode
size int
lock sync.Mutex
}
type LinkNode struct {
data int
next *LinkNode
}
func NewListQueue() *ListQueue {
return &ListQueue{
data: make([]int, 0),
size: 0,
lock: sync.Mutex{},
}
}
func (lq *ListQueue) Top() int {
return lq.data[0]
}
func (lq *ListQueue) Add(data int) {
lq.lock.Lock()
defer lq.lock.Unlock()
lq.size++
lq.data = append(lq.data, data)
}
func (lq *ListQueue) Remove() int {
lq.lock.Lock()
defer lq.lock.Unlock()
lq.size--
head := lq.data[0]
lq.data = lq.data[1:len(lq.data)]
return head
}