数据结构之队列(Queue)

Golang
313
0
0
2022-04-28
标签   数据结构

一、介绍

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