How to implement circular queue in go language: 1. Create a go sample file; 2. Use the "CustomizedQueue" function to define the queue data structure; 2. Use the "NewQueue" function to initialize the queue; 3. Use "IsFull" The function determines whether the queue is full; 4. Use the "IsEmpty" function to determine whether the queue is empty; 5. Use the "GetQueueLength" function to obtain the number of queue elements; 6. Use the "DeQueue" and "EnQueue" functions to determine the dequeuing and dequeuing of data. Join the team.
#The operating environment of this article: Windows 10 system, go version 1.20, dell g3 computer.
Queue is a commonly used data structure in computers. The characteristic of this structure is first in, first out, similar to when we queue up to buy things, first come first served, no jumping in line. Next, we use Go to implement a circular queue data structure.
Go language implements circular queue method:
// CustomizedQueue 自定义队列数据结构,并且约定保留一个空闲的位置不能被插入 type CustomizedQueue struct { data []interface{} maxSize int front int rear int } // NewQueue 初始化队列 func NewQueue(size int) *CustomizedQueue { var result = &CustomizedQueue{} result.maxSize = size + 1 result.data = make([]interface{}, size+1) result.front = 0 result.rear = 0 return result } // IsFull 队列是否满了/* func (s *CustomizedQueue) IsFull() bool { return (s.rear+1)%s.maxSize == s.front } // IsEmpty 判断是否是空队列/** func (s *CustomizedQueue) IsEmpty() bool { return s.data != nil && s.rear == s.front } // GetQueueLength 获取队列元素个数/** func (s *CustomizedQueue) GetQueueLength() int { return (s.rear - s.front + s.maxSize) % s.maxSize } // DeQueue 出队/** func (s *CustomizedQueue) DeQueue() (interface{}, error) { if s.IsEmpty() { return nil, fmt.Errorf("队列为空") } result := s.data[s.front] s.front = (s.front + 1) % s.maxSize return result, nil } // EnQueue 入队/** func (s *CustomizedQueue) EnQueue(item interface{}) error { if s.IsFull() { return fmt.Errorf("队列已满") } s.data[s.rear] = item s.rear = (s.rear + 1) % s.maxSize return nil }
The above is the detailed content of How to implement circular queue in go language. For more information, please follow other related articles on the PHP Chinese website!