golang隊列queue的實現(xiàn)

queue實現(xiàn)依賴于前面的單鏈表的實現(xiàn),內(nèi)部維護的是一個單鏈表,最重要的特性就是滿足先進先出


代碼目錄結構

具體的代碼實現(xiàn)如下:

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

最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

  • 1.ios高性能編程 (1).內(nèi)層 最小的內(nèi)層平均值和峰值(2).耗電量 高效的算法和數(shù)據(jù)結構(3).初始化時...
    歐辰_OSR閱讀 30,187評論 8 265
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴謹 對...
    cosWriter閱讀 11,619評論 1 32
  • 2018.1.28周總結: 1、事業(yè):這周感覺好迷茫,感覺不在狀態(tài)。需要進行調整。 2、...
    10號牟春英成都閱讀 221評論 0 3
  • 建立表達感受的詞匯表 清楚的表達感受需要豐富的詞匯?!昂芎谩被颉昂懿睢边@樣的詞匯很難讓人明白我們實際的狀況。例如如...
    Fly_Catkin閱讀 206評論 0 0
  • 對蘇汐來說大學似乎是一場噩夢,家境一般,長相不算出眾,但也不差,父母在她很小的時候就已經(jīng)離異,從小跟姥姥一起長大,...
    糖點什么閱讀 433評論 0 0

友情鏈接更多精彩內(nèi)容