「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > CSの基礎を学び直す - キューの実装

CSの基礎を学び直す - キューの実装

2024 年 11 月 9 日に公開
ブラウズ:464

Relearning basics of CS - Implementing Queue

キューに並んだことはありますか。キューのデータ構造も同じことを行います。お気に入りのセルフサービスのレストランで注文しようとすると列の最後尾に並び、その後列を上がって店を出ます。

CS のキュー データ構造も同じ機能を実行します。キュー データ構造は、先入れ先出しデータ構造です。キュー データ構造は、基本的にリストへの追加とリストからの削除を行う Enqueue および Dequeue という 2 つの基本関数を使用して構築できます。

実際の例

コンピュータ サイエンスの現実の世界では、キューは次のソフトウェア コンポーネントのバックボーンを形成します

  • タスクのスケジュール設定
  • イベント処理
  • 非同期通信など

単純で視覚化が容易なコンポーネントは

になります。
  1. プレイリスト内の曲のキュー
  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/

リリースステートメント この記事は次の場所に転載されています: https://dev.to/abinav_athreya_f4b5487056/relearning-basics-of-cs-implementing-queue-54g7?1 侵害がある場合は、[email protected] に連絡して削除してください。
最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3