Go-数组模拟队列(单向队列)
作者:互联网
package main
import (
"errors"
"fmt"
)
type Queue struct {
maxSize int
array [5]int
front int
rear int
}
//添加队列
func (q *Queue) AddQueue(val int) (err error) {
//先判断队列是否已满
if q.rear == q.maxSize-1 {
return errors.New("queue full")
}
q.rear++
q.array[q.rear] = val
return
}
//取出队列
func (q *Queue) GetQueue() (val int, err error) {
//先判断队列是否为空
if q.rear == q.front {
return -1, errors.New("queue empty")
}
q.front++
val = q.array[q.front]
return val, err
}
//显示队列
func (q *Queue) ShowQueue() {
fmt.Println("队列当前的情况是:")
for i := q.front + 1; i <= q.rear; i++ {
fmt.Printf("array[%d]=%d\n", i, q.array[i])
}
fmt.Println()
}
func main() {
var key string
var val int
queue := &Queue{
maxSize: 5,
front: -1,
rear: -1,
}
//添加数据
for {
fmt.Println("1.输入add 表示添加数据到队列")
fmt.Println("2.输入get 表示从队列获取数据")
fmt.Println("3.输入show 表示显示队列")
fmt.Println("4.输入exit 表示退出队列")
fmt.Scanln(&key)
switch key {
case "add":
fmt.Println("输入你要输入的数据")
fmt.Scanln(&val)
err := queue.AddQueue(val)
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println("加入队列ok")
}
case "get":
val, err := queue.GetQueue()
if err != nil {
fmt.Println(err.Error())
} else {
fmt.Println("从队列取出一个数=", val)
}
case "show":
queue.ShowQueue()
case "exit":
return
}
}
}
标签:return,val,队列,单向,int,front,Go,rear 来源: https://www.cnblogs.com/jgg54335/p/15866184.html