一、介紹
佇列:是一種特殊的線性表特殊之處在於它只允許在表的前端(front)進行刪除操作,而在表的後端(rear)進行插入操作,和棧一樣,佇列是一種操作受限制的線性表。進行插入操作的端稱為隊尾,進行刪除操作的端稱為隊頭。佇列中沒有元素時,稱為空佇列。
二、邏輯
例:現有一個空佇列
1.新增元素:q{ },我們向佇列中加入(push)元素,push(1)
則 q{ 1 },繼續加入元素push(2),push(3),現在佇列中就有q {1, 2, 3}(加入的元素一定是在加入的上一個元素之後。
2.移除元素:使用pop()方法,將元素移除(注意:每次只能移除一個元素,並且是移除最早進入佇列的元素),如:呼叫一次pop(),則q {2, 3},繼續呼叫pop(),則去{ 3 }。
3.判斷佇列是否為空:使用IsImpty(),如果返回為turn,則為空佇列,false則中為空。
三、程式碼實現(Go)
package queue
type Queue []int
//加入元素
//這裡需要使用指標
func (q *Queue) Push(v int){
*q = append(*q, v)
}
//移除元素
func (q *Queue) Pop() int {
head := (*q)[0]
*q = (*q)[1:]
return head
}
//判斷是否為空
func (q *Queue)IsImpty() bool{
return len((*q)) == 0
}
下面寫一個測試:
package main
import (
"awesomeProject/tree/queue"
"fmt")
func main() {
q := queue.Queue{1}
q.Push(2)
q.Push(3)
q.Pop()
fmt.Println(q)
fmt.Println(q.IsImpty())
fmt.Println(q.Pop())
fmt.Println(q.Pop())
fmt.Println(q.IsImpty())
其輸出如下:
[2 3]
false
2
3
true
本作品採用《CC 協議》,轉載必須註明作者和本文連結