队列是一个先进先出的数据结构,go语言实现一个队列,为了通用队列的元素使用了interface,通常一个队列有如下方法:

  • Push:向队列尾部压入一个元素
  • Pop:从队列头部弹出一个元素
  • Front:获取队列头部元素
  • Size:队列的长度
package queue 

import "errors"
import "fmt"

type queue struct {
    ls []interface{}
}

func New() *queue {
    return &queue{}
}

func (q *queue)Push(i interface{}) {
    q.ls = append(q.ls, i)
}

func (q *queue)Front() (interface{}, error) {
    if len(q.ls) > 0 {
        return q.ls[0], nil
    }
    return 0, errors.New("queue is empty")
}

func (q *queue)Pop() {
    _, err := q.Front()
    if err == nil {
        q.ls = q.ls[1:]
    }
}

func (q *queue)Size() int {
    return len(q.ls)
}

func (q *queue)Print() {
    fmt.Println(q.ls)
}

使用方法:

    q := queue.New()
    q.Push("a")
    q.Push("b")
    q.Push("c")
    q.Push("d")
    for {
        if d, err := q.Front(); err == nil {
            fmt.Println("pop:", d.(string))
            q.Pop()
            q.Print()
        } else {
            break
        }
    }

先向队列中压入四个元素,然后for循环不断从队列中取出元素,当队列中没有元素的时候结束循环。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

鄂ICP备17003086号. Copyright © 2016. All Rights Reserved.