※当サイトではアフィリエイト広告を利用しています

プログラミング

FIFOのロジックについて簡単に解説する

fifo_thumbnail

  • FIFO(ファースト・イン/ファースト・アウト)のロジックについて教えてほしい
  • 言葉ではやりたいことは分かるけど、プログラムとしてはどう実装していいか分からない
  • イラストで仕組みについて教えてほしい

 FIFOについては基本情報/応用情報技術者試験や、プログラミングの本にも幾度となく登場します。

 最初に入れたデータを最初に取り出すという概念は頭では理解できるものの、いざ実装するとなると、どうやっていいか分からないものです。
 FIFOについて解説した記事は多いですが、どれも言葉で長々と説明されているだけで、処理のイメージがしづらい。

 今回はそんなFIFOについて、いざ実装するとなった時に、どのようにロジックを組めばよいかイラストで示しつつ分かりやすく解説したいと思います!

まずは基本的なルール

 FIFOは「キュー」と呼ばれる配列にデータを格納していきます。
 先頭からデータを格納していって、キューが全部埋まれば、それ以上データを格納しません。

 データを取り出すときは先頭(要するに一番古く格納したデータ)から取り出します。

 またデータはリング(循環)バッファ形式で、先頭から順次データを格納していくのですが、一番うしろまで来たらまた先頭からデータを格納しようとします。

 

イラストでロジックを解説

初期状態について

 最初にキューはすべて空(もしくは0で埋める)にしておきます。
 そしてキューがどれだけ埋まっているかはcount(要素数)で管理します

fifo_01

キューを追加すると

 まずは数字の10を追加してみます。

 キューにひとつデータを格納したので、count(要素数)は0→1。
 rear(末尾位置)で次に格納すべき場所を示すので、rearも0→1に移動させます。

fifo_02

更にキューに追加

 20、30、40を追加します。

 countもrearも数字を進めます。

最初に追加した10を取り出してみる

 取り出しを行うときはfront(先頭位置)から取り出します。

 取り出しを行ったらrear同様frontも進めます。そしてcountも減らします。

fifo_05

キューが全部埋まっていたら

 先程の状態から50、60を追加します。
 するとキューは満杯の状態になるので、rearとfrontが同一のところを指します。

fifo_06

 

fifo_07

 そこに70を追加しようとすると、count(要素数)は5になっているので、追加の受付を拒否します。

fifo_08

 以上がFIFOのロジックです。

 

FIFOのコード例

 

 以上がFIFOのロジックとコードでした。

 FIFOはコードにすると難しそうに見えますが、イラストでロジックの動きがわかると案外簡単なものです。

 これ以外にもFIFOを実現するコードは無数にありますが、今回は一番シンプルなコードということでこちらを紹介しました!



-プログラミング

© 2025 名古屋とエンジニアリング