スタック
スタックの実装です。 スタックのデータ構造はLIFO(後入れ先出し)です。
スタックは以下の操作ができます。
- pop: スタックの一番上のデータを削除する
- push: スタックの一番上にデータを追加する
- peek: スタックの一番上の要素を返す
- isEmpty: スタックが空か判定する
実装
class Stack(): """ Stack全体 """ class StackNode(): """ Nodeクラス """ def __init__(self, data): self.data = data self.next = None def __init__(self): self.top = None def pop(self): """ スタックからtopを取り出す """ top = self.top assert top != None, "topが空になっている!" item = top.data self.top = top.next return item def push(self, item): """ スタックにitem追加 """ t = self.StackNode(item) t.next = self.top self.top = t def peek(self): """ スタックのtopの値を返す """ assert self.top != None, "topが空になっている" return self.top.data def isEmpty(self): """ スタックがからか判定する """ return self.top == None
実行すると
if __name__ == "__main__": S = Stack() for i in range(5): S.push(i) while not S.isEmpty(): print(S.pop())
$ python stack.py 4 3 2 1 0