LoginSignup
1
1

More than 3 years have passed since last update.

Pythonでスタック

Posted at

初めに

昔々のその昔(^^ゞ 
情報処理のお勉強をしていた時に理解していたのですが、意外と自分でスタックを扱うプログラムを組む機会はありませんでした。
現在ある個人プロジェクトを進めているのですが、その中でスタックを使う必要が出てきました。
ネタとしてちょうど良いとも思いますので、記事にしておこうと思います。

スタックの概念

スタックは英語で stack と書き、日本語で「積む」という意味です。

例えばテーブルの上などに本を積み上げる事を想像して見てください。
その事自体、お行儀が良いとは言えませんが(^^ゞ
積み上げた本を崩さずにお行儀よく取ろうと思ったら上から順に1冊ずつ取り出すことになります。
この時、積んだ順番と逆の順番で取り出す事になります。
これをFILO(First In Last Out:=先入れ後出し)あるいはLIFO(Last In First Out:=後入れ先出し)と言います。
先に積んだ本が後から取り出される。あるいは後に積んだ本が先に取り出される様子を表しています。

スタックにデータを一つ格納する操作をPUSH(プッシュ)と言います。
PUSH操作を繰り返すことで、例えば本や、例えばデータが順に積み上げられていきます。
push.gif

PUSHとは反対に、スタックに格納された本やデータを一つ取り出す操作をPOP(ポップ)といいます。
POP操作を繰り返すことで、本やデータが順に取り除かれます。
pop.gif

例えばPUSHを5回行った後、POPを3回行い、さらにPUSHを1回行う。という事も出来ます。
この場合、最後にはスタックに3つの本やデータが積まれた状態になります。

プログラム

ではここで Python を使用してスタックを取り扱うクラスを作成したいと思います。

stack.py
class Stack:
    """Stack"""
    def __init__(self):
        self.Clear()

    def Clear(self):
        self.Stack = []

    def Push(self, dat):
        self.Stack.append(dat)
        return self.Stack

    def Pop(self):
        if len(self.Stack) == 0:
            return None
        return self.Stack.pop()

# test
stack = Stack()
stack.Push(1)
stack.Push(2)
stack.Push(3)
print(stack.Pop())
print(stack.Pop())
print(stack.Pop())

Python のリストを使用する事で、とても簡単に作成できました。

終わりに

と、簡単に解説してみました。
どこかで誰かのお役に立てれば幸いです(^^)/

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1