Pythonでキューを作ってみる

プログラマたるもの、暇な時はアルゴリズムとデータ構造で時間を潰すべきと言えよう。
ということで、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モジュールがあるので、そっち使えばいいんだけどね。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)