你有沒有站在佇列裡,佇列資料結構也做同樣的事情。當你想在你最喜歡的自助餐廳點餐時,你站在隊伍的最後,然後你就可以繼續排隊並離開。
CS 中的佇列資料結構執行相同的功能。佇列資料結構是先進先出的資料結構。佇列資料結構可以使用兩個基本函數 Enqueue 和 Dequeue 來構建,這兩個函數基本上是添加到列表和從列表中刪除。
在電腦科學的現實世界中,隊列構成了以下軟體組件的支柱
雖然一個簡單且易於視覺化的組件是
package main import ( "fmt" "errors" ) type Queue struct{ Elements []int Size int } func (q *Queue) Enqueue(value int){ if q.GetLength() == q.Size { fmt.Println("Overflow") return } q.Elements = append(q.Elements, value) } func (q *Queue) Dequeue() int { if q.IsEmpty() { fmt.Println("UnderFlow") return 0 } element := q.Elements[0] if q.GetLength() == 1 { q.Elements = nil return element } q.Elements = q.Elements[1:] return element } func (q *Queue) GetLength() int { return len(q.Elements) } func (q *Queue) IsEmpty() bool { return len(q.Elements) == 0 } func (q *Queue) Peek() (int, error) { if q.IsEmpty() { return 0, errors.New("empty queue") } return q.Elements[0], nil }
時間複雜度 - 入隊與出隊的 O(1)
空間複雜度 - 入隊與出隊的 O(1)
參考 - https://www.geeksforgeeks.org/queue-in-go-language/
以上是重新學習CS基礎知識-實作佇列的詳細內容。更多資訊請關注PHP中文網其他相關文章!