Queue


Queue


この文書は2021年12月31日に書かれています.
Devアルゴリズムシリーズにおけるデータ構造Docを読んでみましょう

Queueとは?


Queueは、次のような特徴を持つデータ構造です.
  • FIFO (first in first out)
    1.1. 横置きのサンドイッチを作るコンセプトで、最初に入れた要素から取り出します.
  • DELETE演算から削除される要素を定義します.
  • INSERT演算をENQUEと呼ぶ.
  • DELETE演算をDEQUEと呼ぶ.
  • これらのキューの重要な手順は、次のとおりです.
    実際には、データ構造ライブラリで作成されるメソッドの数は、この数をはるかに上回っています.
  • ENQUE|新しい要素を最後の位置
  • に入れる
  • DEQUE|最初の要素
  • を取り出す
    次のプロセスでは、Qはキューを表す.

    # ENQUEUE


    キューが飽和していないことを基本前提とします.
    Queueの末尾にx値を加算します.
    Queueの末尾とQueueの長さ
    同じならQ.tailを1に変えます.
    違うならQ.tail++.
    ENQUEUE (Q, x)
    
       Q 의 포화를 검사하는 코드
       
       Q[Q.tail] = x
       if Q.tail == Q.length
          Q.tail = 1
       else
          Q.tail = Q.tail+1

    # DEQUEUE


    Queueが空でないことを基本前提としています.
    Queueヘッダ(FIFO)の値を保持します.
    Queueの頭と長さ
    同じなら、髪の毛を1に変えます.
    違うならQ.head++にします.
    次にxを返します.
    DEQUEUE (Q)
    
       Q 가 비었는지 확인하는 코드
    
       x = Q[Q.head]
       if Q.head == Q.length
          Q.head=1
       else
          Q.head=Q.head+1
          
       return x

    JavaでQueueは?


    Java(jdk 1.8以降)はCollection Frameworkを通ります.
    Queueが実現しました.
    参考にして使えますが、
    WrapperクラスとGenericsはPrimitiveタイプではありません.
    ショーが気になってPrimitiveを扱うなら、別のStack類を作るのもいいですね.
    ###前へ...
    Queueの変形形態としてはDequeやPriority Queueなどがある.
    基本的にQueueが変わったり本質が全く違うので、以下の文章を参考にして整理した方が良いでしょう.
    Java:Collection FrameworkでDequeue、Priority Queue
    Heap Sort | Priority Queue Sort

    バックアップの例


    10845番キュー
    1158号ジョセフス問題
    10866号デッキ