一、介绍
队列:是一种特殊的线性表特殊之处在于它只允许在表的前端(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