队列可以用数组或链表实现,遵从先入先出。

目录结构:

在main中调用queue包中的属性和方法,如何调用参考另一篇文章: https://www.cnblogs.com/xiximayou/p/12005480.html

一个队列需要有四要素:容量、队首指针、队尾指针、存储数据的数组

当队尾指针==容量-1时,此时队列已满,就不能再有数据进队;

当队首指针==队尾指针时,此时队列已空,就不能再从队列中取出数据;

同时可以发现,这种队列只能使用一次,因为那时队首和队尾都指向队尾了。

代码如下:

queue.go

package queue

import (
"errors"
"fmt"
) //Queue 使用结构体管理队列
type Queue struct {
MaxSize int
Array []int //模拟队列
Front int //队列首位
Rear int //队列尾部
} //AddQueue 向队列中添加一个值
func (q *Queue) AddQueue(val int) (err error) {
q.MaxSize =
//先判断队列是否已满
if q.Rear == q.MaxSize- {
return errors.New("队列已满")
}
q.Rear++
q.Array[q.Rear] = val
return
} //GetQueue 得到一个值
func (q *Queue) GetQueue() (val int, err error) {
if q.Front == q.Rear {
return -, errors.New("队列已空")
}
q.Front++
val = q.Array[q.Front]
return val, err
} //ShowQueue 显示队列
func (q *Queue) ShowQueue() {
for i := q.Front + ; i <= q.Rear; i++ {
fmt.Printf("queue[%d]=%v\t", i, q.Array[i])
}
}

main.go

package main

import (
"fmt"
"go_code/data_structure/queue"
"os"
) func main() {
var key string
var val int
q := &queue.Queue{
MaxSize: ,
Front: -,
Rear: -,
}
for {
fmt.Println("------------------------------")
fmt.Println("1.输入add表示添加数据到队列")
fmt.Println("2.输入get表示从队列中获取数据")
fmt.Println("3.输入show表示显示队列")
fmt.Println("4.输入exit表示退出")
fmt.Println("------------------------------")
fmt.Scanln(&key)
switch key {
case "add":
fmt.Println("请输入要添加的值:")
fmt.Scanln(&val)
err := q.AddQueue(val)
if err != nil {
fmt.Println(err)
} else {
fmt.Println("添加成功")
fmt.Println("Rear:", q.Rear)
}
case "get":
val, err := q.GetQueue()
if err != nil {
fmt.Println(err)
} else {
fmt.Println("得到的值为:", val)
fmt.Println("Front:", q.Front)
} case "show":
q.ShowQueue()
fmt.Println()
case "exit":
os.Exit()
}
}
}

golang数据结构之队列的更多相关文章

  1. 数据结构之队列(Python 版)

    数据结构之队列(Python 版) 队列的特点:先进先出(FIFO) 使用链表技术实现 使用单链表技术,在表首尾两端分别加入指针,就很容易实现队列类. 使用顺序表list实现 # 队列类的实现 cla ...

  2. C语言数据结构-循环队列的实现-初始化、销毁、清空、长度、队列头元素、插入、删除、显示操作

    1.数据结构-循环队列的实现-C语言 #define MAXSIZE 100 //循环队列的存储结构 typedef struct { int* base; //基地址 int _front; //头 ...

  3. 数据结构之队列and栈总结分析

    一.前言: 数据结构中队列和栈也是常见的两个数据结构,队列和栈在实际使用场景上也是相辅相成的,下面简单总结一下,如有不对之处,多多指点交流,谢谢. 二.队列简介 队列顾名思义就是排队的意思,根据我们的 ...

  4. javascript数据结构之队列

    首先什么是队列? 排队买东西就是生活中队列的实际例子,在队伍中大家必须按照顺序来,不能插队,新来的人只能排在队伍的最后面.新加入的人相当于队列的后端加入的元素,队伍最前面买完东西的人离开队伍相当于是队 ...

  5. cb04a_c++_数据结构_STL_queue队列-一般用来做系统软件开发

    /*cb04a_c++_数据结构_STL_queue队列-一般用来做系统软件开发队列(只能两端数据)与堆栈(只能一端操作数据)都没有迭代器.,队列:FIFO先进先出自适应容器(容器适配器)栈适配器ST ...

  6. golang数据结构之环形队列

    目录结构: circlequeue.go package queue import ( "errors" "fmt" ) //CircleQueue 环型队列 ...

  7. golang数据结构和算法之QueueLinkedList链表队列

    队列和堆栈不一样的地方在于进出顺序: 堆栈是后进先出, 队列是先进先出. QueueLinkedList.go package QueueLinkedList type Node struct { d ...

  8. golang数据结构和算法之CircularBuffer环形缓冲队列

    慢慢练语法和思路, 想说的都在代码及注释里. CircularBuffer package CircularBuffer const arraySize = 10 type CircularBuffe ...

  9. golang数据结构之总结

    golang语言的一些数据结构实现,包括: 队列(单队列.循环队列) 链表(单链表.双链表.循环链表(解决约瑟夫环问题)) 栈(实现加减乘除计算) 递归之迷宫问题 哈希表(员工管理系统) 树(三种遍历 ...

随机推荐

  1. Alibaba 镜像

      <mirrors> <mirror> <id>alimaven</id> <name>aliyun maven</name> ...

  2. Charles抓取HTTPS数据包方法

    设置代理端口8888 ssl代理设置 允许所有地址连接 手机获取证书之前,先在电脑安装证书,需要信任.help-->ssl-proxying-->Install Charles Root ...

  3. (八)golang--复杂类型之指针

    首先我们要明确:(1)基本数据类型:变量存的就是值,也叫值类型: (2)获取变量的地址,用&,例如var num int,获取num的地址:&num: (3)指针类型:变量存的是一个地 ...

  4. JVM性能调优详解

    前面我们学习了整个JVM系列,最终目标的不仅仅是了解JVM的基础知识,也是为了进行JVM性能调优做准备.这篇文章带领大家学习JVM性能调优的知识. 性能调优 性能调优包含多个层次,比如:架构调优.代码 ...

  5. Python文字转换语音,让你的文字会「说话」,抠脚大汉秒变撒娇萌妹

    作者 | pk 哥 来源公众号 | Python知识圈(ID:PythonCircle) APP 也有文字转换为语音的功能,虽然听起来很别扭,但是基本能解决长辈们看不清文字或者眼睛疲劳,通过文字转换为 ...

  6. 树上神奇 逆 逆序对(我的叫法)hh的小纸条 重中之重!!!!!

    HH是一位十分爱好数学的大佬,尤其喜爱数数,一天百无聊赖的他写下了一个1-N的排列,并且在小纸条上记下了每个数前面有多少个数比他小,但HH不小心忘记了这个排列.现在只有当时记下的小纸条,现在请你还原出 ...

  7. Python 基础之 线程与进程

    Python 基础之 线程与进程 在前面已经接触过了,socket编程的基础知识,也通过socketserver 模块实现了并发,也就是多个客户端可以给服务器端发送消息,那接下来还有个问题,如何用多线 ...

  8. nyoj 170-网络的可靠性 (度为1)

    170-网络的可靠性 内存限制:64MB 时间限制:3000ms 特判: No 通过数:15 提交数:21 难度:3 题目描述: A公司是全球依靠的互联网解决方案提供商,也是2010年世博会的高级赞助 ...

  9. ZeroC ICE源代码中的那些事 - 嵌套类和局部类

    使用嵌套类(类中定义的类,c++没有静态类)或局部类(在函数或成员方法中定义的类),进行行为模式的委托(委托请求)或异步 . java中嵌套类和局部类隐式完成了你对外部对象(实例)访问的私有堆栈的初始 ...

  10. Win32 COM组件 x Android Service (二)

    继续上一篇. 如果不使用AIDL(Android Interface Definition Language接口描述语言)编写服务接口的话,(COM组件,CORBA组件,ICE组件以及其它远程调用框架 ...