Go言語で循環キューを実装する方法

DDD
リリース: 2023-06-05 10:52:27
オリジナル
1266 人が閲覧しました

Go 言語で循環キューを実装する方法: 1. Go サンプル ファイルを作成する; 2. "CustomizedQueue" 関数を使用してキューのデータ構造を定義する; 2. "NewQueue" 関数を使用してキューを初期化する; 3.「IsFull」関数を使用してキューがいっぱいかどうかを判断します; 4.「IsEmpty」関数を使用してキューが空かどうかを判断します; 5.「GetQueueLength」関数を使用してキューの要素数を取得します; 6. 「DeQueue」関数と「EnQueue」関数を使用して、データのデキューとデキューを決定します。チームに参加してください。

Go言語で循環キューを実装する方法

#この記事の動作環境: Windows 10 システム、go バージョン 1.20、dell g3 コンピューター。

キューとはコンピュータで一般的に使用されるデータ構造です。この構造の特徴は先入れ先出しです。私たちが何かを買うために列に並ぶのと同じように、私たちは先着順で購入し、ジャンプすることはできません列をなして。次に、Go を使用して循環キュー データ構造を実装します。

Go 言語は循環キュー メソッドを実装します:

// 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
}
ログイン後にコピー

以上がGo言語で循環キューを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート