Go 言語での循環キューの実装の詳細については、こちらをご覧ください。
循環キューは一般的に使用されるデータ構造であり、配列スペースをリサイクルし、キュー操作を効率的に実装できることが特徴です。 Go 言語では、配列と 2 つのポインターを介して循環キューを実装できます。この記事では、Go 言語での循環キューの実装について詳しく説明し、具体的なコード例を示します。
循環キューの実装原理
循環キューの実装原理は、主に配列の循環使用を使用し、前後の 2 つのポインタによってキューの先頭と末尾をマークすることです。 。後部ポインタが配列の末尾に到達すると、モジュロ演算を通じて再び配列の先頭を指すことができ、キューのリサイクルを実現します。
Go 言語での循環キューの実装手順
-
循環キュー構造の定義
type CircularQueue struct { capacity int front int rear int data []interface{} }
ログイン後にコピー 循環キューの初期化
func NewCircularQueue(capacity int) *CircularQueue { return &CircularQueue{ capacity: capacity, front: 0, rear: 0, data: make([]interface{}, capacity), } }
ログイン後にコピーエントリ操作
func (cq *CircularQueue) Enqueue(val interface{}) bool { if (cq.rear+1)%cq.capacity == cq.front { return false // 队列已满 } cq.data[cq.rear] = val cq.rear = (cq.rear + 1) % cq.capacity return true }
ログイン後にコピーデキュー操作
func (cq *CircularQueue) Dequeue() interface{} { if cq.front == cq.rear { return nil // 队列为空 } val := cq.data[cq.front] cq.front = (cq.front + 1) % cq.capacity return val }
ログイン後にコピー
完全なサンプルコード
package main import "fmt" type CircularQueue struct { capacity int front int rear int data []interface{} } func NewCircularQueue(capacity int) *CircularQueue { return &CircularQueue{ capacity: capacity, front: 0, rear: 0, data: make([]interface{}, capacity), } } func (cq *CircularQueue) Enqueue(val interface{}) bool { if (cq.rear+1)%cq.capacity == cq.front { return false } cq.data[cq.rear] = val cq.rear = (cq.rear + 1) % cq.capacity return true } func (cq *CircularQueue) Dequeue() interface{} { if cq.front == cq.rear { return nil } val := cq.data[cq.front] cq.front = (cq.front + 1) % cq.capacity return val } func main() { cq := NewCircularQueue(5) cq.Enqueue(1) cq.Enqueue(2) cq.Enqueue(3) fmt.Println(cq.Dequeue()) fmt.Println(cq.Dequeue()) fmt.Println(cq.Dequeue()) }
スルー上記のサンプル コードでは、単純な循環キューを実装し、エンキュー操作とデキュー操作を実装しました。配列とポインターに基づくこの実装では、固定サイズの配列を効果的に利用し、循環キューの基本機能を実装します。
概要: この記事の導入を通じて、読者は Go 言語での循環キューの実装についてより深く理解し、コード例を通じて循環キューについての理解を深めることができます。この記事が読者のお役に立てば幸いです。
以上がGo 言語での循環キューの実装の詳細については、こちらをご覧ください。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









Go Crawler Collyのキュースレッドの問題は、Go言語でColly Crawler Libraryを使用する問題を調査します。 �...

Go言語での文字列印刷の違い:printlnとstring()関数を使用する効果の違いはGOにあります...

大企業または有名なオープンソースプロジェクトによって開発されたGOのどのライブラリが開発されていますか? GOでプログラミングするとき、開発者はしばしばいくつかの一般的なニーズに遭遇します...

redisstreamを使用してGo言語でメッセージキューを実装する問題は、GO言語とRedisを使用することです...

Golandのカスタム構造ラベルが表示されない場合はどうすればよいですか?ゴーランドを使用するためにGolandを使用する場合、多くの開発者はカスタム構造タグに遭遇します...

GO言語で構造を定義する2つの方法:VARとタイプのキーワードの違い。構造を定義するとき、GO言語はしばしば2つの異なる執筆方法を見ます:最初...

ポインター構文とviperライブラリの使用における問題への取り組みGO言語でプログラミングするとき、特にポインターの構文と使用を理解することが重要です...
