Go數據結構之隊列

1、什麼是隊列git

%E6%8E%92%E9%98%9F.png

數據結構裏的隊列就是模仿現實中的排隊。如上圖中狗狗排隊上廁所,新來的狗狗排到隊伍最後,最前面的狗狗撒完尿走開,後面的跟上。能夠看出隊列有兩個特色:
(1) 新來的都排在隊尾;
(2) 最前面的辦理業務後離隊,後面一個跟上。
根據特色,計算機磚家就概括如下隊列結構。github

%E9%98%9F%E5%88%97.png

隊列簡稱FIFO,含義本身體會。
2、隊列的結構
%E9%98%9F%E5%88%97%E5%88%86%E8%A7%A3.png
繼續大衛哥的拆卸手。隊列拆成容器和鏈表,分別用結構和單鏈表實現,如上圖。
3、接口說明及實現
%E9%98%9F%E5%88%97%E6%8E%A5%E5%8F%A3.png
一、Init
初始化隊列,實際上是初始化裏面單鏈表。
func (queue *Queue) Init() {
lst := new(List)
(*queue).list = lst數據結構

lst.Init()
}併發

二、Enqueue
有尿的小狗狗排隊。
func (queue *Queue) Enqueue(data Object) bool {
return (*queue).list.Append(data)
}ui

三、Dequeue
撒完尿的小狗狗出列。
func (queue *Queue) Dequeue() Object {
return (*queue).list.RemoveAt(0)
}spa

四、Peek
時不時偷看隊頭狗狗,這個癖好好特別。
func (queue *Queue) Peek() Object {
return (*queue).list.First()
}接口

五、GetSize
場地有限,隊伍不能太長,得隨時掌握隊伍長度。
func (queue *Queue) GetSize() uint64 {
return (*queue).list.GetSize()
}隊列

4、小結
這裏小結大衛哥不說廢話,和上節同樣,若是用雙向鏈表或其餘結構可否實現隊列?隊列能夠應用在順序處理流中,包括事件循環,併發處理,操做同步等等。事件

代碼下載get

相關文章
相關標籤/搜索