差分

ナビゲーションに移動 検索に移動

キュー

2,688 バイト追加, 2015年11月13日 (金) 01:56
ページの作成:「'''キュー'''(英語:queue)とは、データ構造のひとつで、リストのうちデータを先入れ先出しするものをいう。 ==...」
'''キュー'''([[英語]]:queue)とは、[[データ構造]]のひとつで、[[リスト]]のうち[[データ]]を先入れ先出しするものをいう。

==概要==
[[ファイル:Data Queue.svg|thumb|320px]]
キューから[[データ]]を取り出すときには先に入れられたデータから順に取り出される。
いわゆる人気ラーメン屋などの待ち行列のことである。
先に列んでいた者が優先され、後から来たやつは後ろに列べという常識的なデータ構造であり、そのような業務を補助する常識的なシステムでは多用される。

キューに[[データ]]を入れることをエンキュー([[英語]]:enqueue)、取り出すことをデキュー([[英語]]:dequeue)という。

キューの変形として先頭と末尾の両端から入出力を行えるものを[[両端キュー]]という。

また、キューに追加される要素に優先度をつけ、その優先度によりソートを行うものを[[優先度付きキー]]という。現実世界の例でいえば、最近なにかと話題の[[上級国民]]を優遇する制度を思い浮かべるかもしれないが、みじかなところでは医療における診療の優先度(トリアージ)などがある。

キューとは逆に後入れ先出しの[[リスト]]を[[スタック]]と呼ぶ。

==主な実装==
===C#===
[[C Sharp|C#]]ではSystem.Collections.Generic.Queue<T>クラスが標準で用意されている。
<source lang="csharp">
using System;
using System.Collections.Generic;

class MainClass
{
public static void Main(string[] args)
{
var queue = new Queue<string>();

queue.Enqueue("A");
queue.Enqueue("B");

Console.WriteLine(queue.Dequeue()); //B
Console.WriteLine(queue.Dequeue()); //A
}
}
</source>

===PHP===
[[PHP]]では[[データ構造]]クソ食らえで基本は[[配列]]のみとなる。標準ではなんでもかんでもarray()である。
エンキューを行うarray_unshift関数を使い、デキューを行うarray_shift関数を使うことでキューの様に動作する。
このためキューとして動作していたと思ったら途中からスタックのように動作しだした、などという奇怪な[[ソースコード]]に遭遇する事例も多々ある。
<source lang="php">
<?php
$queue = array();

array_unshift($queue, "A");
array_unshift($queue, "B");

var_dump(array_shift($queue));
var_dump(array_shift($queue));
</source>

==関連項目==
*[[スタック]]

==参考文献==
{{reflist}}

{{stub}}
匿名利用者

案内メニュー