アルゴリズムチャレンジ via Python (1) - Stack編 -
アルゴリズムの勉強のために代表的なものを書いてみました.言語はPython.
今回はお題には無いのですがStackを書いてみました.
実装方法は幾つもありそうですが今回はクラスを使います.
Stack classの要件はこんな感じでしょうか?
- クラスは内部に配列を持つ
- クラスは内部にStackのを表すカウンタを持つ
- クラスはpush関数を持つ.
- 引き数:Stackに追加するオブジェクト
- 戻り値:なし
- クラスはpop関数を持つ.
- 引き数:なし
- 戻り値:Stackの先頭にオブジェクト
#!/usr/bin/env python class MyStack: def __init__(self): self.count = 0 self.mylist = [] def length(self): return self.count def push(self, item): self.mylist.append(item) self.count += 1 def pop(self): self.count -= 1 if self.count < 0: self.count = 0 return else: return self.mylist[self.count] # Driver stack = MyStack() stack.push(1) stack.push(2) stack.push(3) print(stack.pop()) # 3 print(stack.pop()) # 2 print(stack.pop()) # 1 print(stack.pop()) # None
実はPythonの配列(List)は最初からStackとして使えるように設計されています.List型にはpush関数とpop関数がある.といえばだいたい伝わるかな?
#!/usr/bin/env python list = [] list.push(1) list.push(2) list.push(3) print(list.pop()) # 3 print(list.pop()) # 2 print(list.pop()) # 1