プログラマたるもの、暇な時はアルゴリズムとデータ構造で時間を潰すべきと言えよう。
ということで、Pythonでキューを作ってみた。
プログラマたるもの、キューくらいサクッと書けないといけないね。
class OresamaQueue(object):
  def __init__(self):
    self._buffer = []
  def dequeue(self):
    if len(self._buffer) > 0:
      return self._buffer.pop()
    else:
      return None
  def enqueue(self, obj):
    self._buffer = [obj] + self._buffer
解説するとこもないくらい単純なキューの実装だ。
Pythonのリストにはリストの末尾を削除しつつその値を返してくれるpop()というステキメソッドがあるので、dequeueは楽勝で書けた。
enqueueもPythonではリスト同士を足し合わせると1つのリストに合体してくれるので、[obj]で受け取った値を配列にして既存の配列と足し算しちまえばいい。
テストをしよう。手動で。
>>> import OresamaQueue >>> q = OresamaQueue() >>> q.enqueue(1) >>> q.enqueue(2) >>> q.enqueue(3) >>> q.dequeue() 1 >>> q.dequeue() 2 >>> q.dequeue() 3 >>> q.dequeue() >>> q.dequeue() is None True
うん、見事なまでの先入れ先出し、まごうことないキュー。
ま、Pythonには最初からQueueモジュールがあるので、そっち使えばいいんだけどね。