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