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!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

AI Hentai Generator
Generate AI Hentai for free.

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

SecLists
SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

PhpStorm Mac version
The latest (2018.2.1) professional PHP integrated development tool

SAP NetWeaver Server Adapter for Eclipse
Integrate Eclipse with SAP NetWeaver application server.

Dreamweaver CS6
Visual web development tools





