キューの実装

キューはFIFO先入れ先出し)のデータ構造です。

キューがもつ操作は

  • add(item):要素を追加する
  • remove():先頭の要素を削除する
  • peek(): 先頭の要素を返す
  • isEmpty(): キューが空の場合にTure
class Queue():
    class Node():
        def __init__(self, data):
            self.data = data
            self.next = None

    def __init__(self):
        self.first = None
        self.last = None

    def add(self, item):
        t = self.Node(item)
        if self.last:
            self.last.next = t # lastの次定義する
        # lastを入れ替える
        self.last = t
        if self.first == None:
            self.first = self.last

    def remove(self):
        assert self.first != None, "first has no element"
        data = self.first.data
        self.first = self.first.next
        if self.first == None:
            self.last = None
        return data

    def peek(self):
        assert self.first == None, "first has no element"
        return self.first.data

    def isEmpty(self):
        return self.first == None

if __name__ == "__main__":
    queue = Queue()
    for i in range(5):
        queue.add(i)

    print("removeする")
    while not queue.isEmpty():
        print(queue.remove())