美文网首页我爱编程
golang队列queue的实现

golang队列queue的实现

作者: maxZhang | 来源:发表于2018-06-03 16:55 被阅读1817次

    queue实现依赖于前面的单链表的实现,内部维护的是一个单链表,最重要的特性就是满足先进先出


    代码目录结构

    具体的代码实现如下:

    package queue
    
    import "algorithm/linkedList"
    
    /*
    队列的特性较为单一,基本操作即初始化、获取大小、添加元素、移除元素等。
    最重要的特性就是满足先进先出
    */
    type Queue struct {
        linkedList.List
    }
    
    //加入队列
    func (this *Queue) Put(data linkedList.Object) {
        this.Add(data)
    }
    
    //pop出队列
    func (this *Queue) Pop() linkedList.Object {
        if this.GetHeadNode() == nil {
            panic("this queue is nil")
        }
        headNode := this.GetHeadNode()
        this.RemoveAtIndex(0)
        return headNode
    }
    
    //获得队列的长度
    func (this *Queue) GetSize() linkedList.Object {
        return this.GetSize()
    }
    

    对应的测试代码为:

    package main
    
    import (
        "fmt"
        "algorithm/queue"
    )
    
    func main() {
        q := queue.Queue{}
        q.Put("queue_1")
        q.Put("queue_2")
        travselQueue(&q)
    
        q.Pop()
        travselQueue(&q)
    }
    
    func travselQueue(q *queue.Queue)  {
        fmt.Println("-------queue----begin-------------")
        //遍历
        head := q.GetHeadNode()
        for head != nil {
            fmt.Println(head.Data)
            head = head.Next
        }
        fmt.Println("-------queue------end-------")
    }
    
    

    相关文章

      网友评论

        本文标题:golang队列queue的实现

        本文链接:https://www.haomeiwen.com/subject/igwjsftx.html