golang队列queue的实现

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-------")
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 30,141评论 8 265
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,573评论 1 32
  • 2018.1.28周总结: 1、事业:这周感觉好迷茫,感觉不在状态。需要进行调整。 2、...
    10号牟春英成都阅读 221评论 0 3
  • 建立表达感受的词汇表 清楚的表达感受需要丰富的词汇。“很好”或“很差”这样的词汇很难让人明白我们实际的状况。例如如...
    Fly_Catkin阅读 204评论 0 0
  • 对苏汐来说大学似乎是一场噩梦,家境一般,长相不算出众,但也不差,父母在她很小的时候就已经离异,从小跟姥姥一起长大,...
    糖点什么阅读 429评论 0 0

友情链接更多精彩内容