アルゴリズムチャレンジ 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