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