日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

Go 分布式学习利器(11)-- Go语言通过单链表 实现队列

發(fā)布時間:2023/11/27 生活经验 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go 分布式学习利器(11)-- Go语言通过单链表 实现队列 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一個小實驗,將之前學習的Go相關的語法做個總結。
包括:

  1. Go語言接口特性
  2. Go語言封裝特性
  3. Go語言 變量,指針,函數 語法
  4. GO語言 條件和循環(huán)語句 的語法
  5. GO語言的測試程序

通過鏈表實現一個隊列,元素在其中 擁有先進先出的特性。
簡單實用。

package data_structureimport ("fmt""testing"
)/*隊列的結構體,一個是數據,一個是指針
*/
type Queue struct{data intNext *Queue
}var mq *Queue // 用作隊列的頭節(jié)點
var endMq *Queue // 用作隊列尾節(jié)點的上一個節(jié)點,方便插入/*通過可變參數 : node ... int 來直接構造隊列
*/
func (q *Queue)Create(node ... int) bool {if len(node) == 0{return false}mq = new(Queue)mq.Next=nilendMq = mqfor _,n := range node{newQueueNode := new(Queue)newQueueNode.data = n/*鏈表的頭插法,可以用來構造棧*///newQueueNode.Next = mq.Next//mq.Next = newQueueNode/*鏈表的尾插法,可以用來構造隊列*/endMq.Next = newQueueNodeendMq = newQueueNode}endMq.Next = nilreturn true
}/*向隊列中添加元素
*/
func (q *Queue)Push(node int) {newQueueNode := new(Queue)newQueueNode.data = nodeendMq.Next = newQueueNodeendMq = newQueueNodeendMq.Next = nil
}/*隊列判空
*/
func (q *Queue)IsEmpty() bool {if mq.Next != nil {return false} else {return  true}
}/*隊列的大小
*/
func (q *Queue)Size() int {if mq.Next == nil{return 0}l := 1var newQueue *QueuenewQueue = mq.Nextfor  newQueue.Next!= nil {l ++newQueue = newQueue.Next}return l
}/*從隊列中彈出元素
*/
func (q *Queue)Pop() bool {if mq.Next != nil{mq = mq.Nextreturn true}return false
}/*打印當前隊列中的元素
*/
func (q *Queue)Print() {n := 1var newHead *QueuenewHead = mq.Nextfor newHead.Next != nil {fmt.Printf("node%d: %d\n",n,newHead.data )n++newHead = newHead.Next}fmt.Printf("node%d: %d\n",n,newHead.data )
}/*測試代碼
*/
func TestQueue(t *testing.T) {var Q *QueueQ = new(Queue)t.Log("Create queue : 1,2,3")Q.Create(1,2,3)Q.Print()Q.Push(2)t.Log("Push 2")Q.Print()t.Log("Size ", Q.Size())t.Log("Pop ",Q.Pop())Q.Print()t.Log("Size ", Q.Size())
}

輸出如下:

=== RUN   TestQueuequeue_test.go:104: Create queue : 1,2,3
node1: 1
node2: 2
node3: 3queue_test.go:109: Push 2
node1: 1
node2: 2
node3: 3
node4: 2queue_test.go:111: Size  4queue_test.go:113: Pop  true
node1: 2
node2: 3
node3: 2queue_test.go:116: Size  3
--- PASS: TestQueue (0.00s)
PASS

總結

以上是生活随笔為你收集整理的Go 分布式学习利器(11)-- Go语言通过单链表 实现队列的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。