Rumah > masalah biasa > Bagaimana untuk melaksanakan baris gilir bulat dalam bahasa go

Bagaimana untuk melaksanakan baris gilir bulat dalam bahasa go

DDD
Lepaskan: 2023-06-05 10:52:27
asal
1272 orang telah melayarinya

Cara melaksanakan baris gilir bulat dalam bahasa go: 1. Buat fail sampel go 2. Gunakan fungsi "CustomizedQueue" untuk menentukan struktur data baris gilir 2. Gunakan fungsi "NewQueue" untuk memulakan baris gilir ; 3. Gunakan "IsFull" Fungsi menentukan sama ada baris gilir penuh; Gunakan fungsi "DeQueue" dan "EnQueue" untuk menentukan penyahbarisan dan penyahbarisan data Sertai pasukan.

Bagaimana untuk melaksanakan baris gilir bulat dalam bahasa go

Persekitaran pengendalian artikel ini: Sistem Windows 10, pergi versi 1.20, komputer dell g3.

Barisan ialah struktur data yang biasa digunakan dalam komputer Ciri-ciri struktur ini ialah masuk dahulu, keluar dahulu, sama seperti ketika kita beratur untuk membeli sesuatu, dahulu didahulukan, tiada lompat barisan. Seterusnya, kami menggunakan Go untuk melaksanakan struktur data baris gilir bulat.

Perlaksanaan bahasa Go bagi kaedah baris gilir bulat:

// 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
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan baris gilir bulat dalam bahasa go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan