golang数据结构之队列
发布时间:2020-12-16 09:17:58 所属栏目:大数据 来源:网络整理
导读:队列可以用数组或链表实现,遵从先入先出。 目录结构: 在main中调用queue包中的属性和方法,如何调用参考另一篇文章:?https://www.cnblogs.com/xiximayou/p/12005480.html 一个队列需要有四要素: 容量、队首指针、队尾指针、存储数据的数组 ; 当队尾指针
队列可以用数组或链表实现,遵从先入先出。 目录结构: 在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 [4]int 模拟队列 Front int 队列首位 Rear 队列尾部 } AddQueue 向队列中添加一个值 func (q *Queue) AddQueue(val ) (err error) { q.MaxSize = 4 先判断队列是否已满 if q.Rear == q.MaxSize-1 { return errors.New(队列已满) } q.Rear++ q.Array[q.Rear] = val return } GetQueue 得到一个值 func (q *Queue) GetQueue() (val ,err error) { if q.Front == q.Rear { return -1,errors.New(队列已空) } q.Front++ val = q.Array[q.Front] val,err } ShowQueue 显示队列 func (q *Queue) ShowQueue() { for i := q.Front + 1; i <= q.Rear; i++ { fmt.Printf(queue[%d]=%vtpackage main import ( go_code/data_structure/queueos ) func main() { var key string var val q := &queue.Queue{ MaxSize: 4-for { fmt.Println(------------------------------) fmt.Println(1.输入add表示添加数据到队列2.输入get表示从队列中获取数据3.输入show表示显示队列4.输入exit表示退出) 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:get: val,err := q.GetQueue() 得到的值为:"Front:show: q.ShowQueue() fmt.Println() exit: os.Exit(0) } } } ? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |