キューに並んだことはありますか。キューのデータ構造も同じことを行います。お気に入りのセルフサービスのレストランで注文しようとすると列の最後尾に並び、その後列を上がって店を出ます。
CS のキュー データ構造も同じ機能を実行します。キュー データ構造は、先入れ先出しデータ構造です。キュー データ構造は、基本的にリストへの追加とリストからの削除を行う Enqueue および Dequeue という 2 つの基本関数を使用して構築できます。
コンピュータ サイエンスの現実の世界では、キューは次のソフトウェア コンポーネントのバックボーンを形成します
単純で視覚化が容易なコンポーネントは
になります。package main import ( "fmt" "errors" ) type Queue struct{ Elements []int Size int } func (q *Queue) Enqueue(value int){ if q.GetLength() == q.Size { fmt.Println("Overflow") return } q.Elements = append(q.Elements, value) } func (q *Queue) Dequeue() int { if q.IsEmpty() { fmt.Println("UnderFlow") return 0 } element := q.Elements[0] if q.GetLength() == 1 { q.Elements = nil return element } q.Elements = q.Elements[1:] return element } func (q *Queue) GetLength() int { return len(q.Elements) } func (q *Queue) IsEmpty() bool { return len(q.Elements) == 0 } func (q *Queue) Peek() (int, error) { if q.IsEmpty() { return 0, errors.New("empty queue") } return q.Elements[0], nil }
時間計算量 - エンキューとデキューの場合は O(1)
スペースの複雑さ - エンキューとデキューの場合は O(1)
リファレンス - https://www.geeksforgeeks.org/queue-in-go- language/
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3