Python-スタック

英語の辞書では、単語スタックはオブジェクトを別のオブジェクトの上に配置することを意味します。これは、このデータ構造でメモリが割り当てられるのと同じ方法です。一連のプレートがキッチンに上下に格納されるのと同様の方法でデータ要素を格納します。したがって、スタックデータ構造により、スタックの最上位と呼ばれる一方の端での操作が可能になります。要素を追加したり、要素を削除したりできるのは、スタック内でのみです。

スタックでは、スタックの一番上からしか削除できないため、最後に挿入された要素が最初に出てきます。このような機能は、後入れ先出し(LIFO)機能として知られています。要素を追加および削除する操作は、PUSH そして POP。次のプログラムでは、これを追加関数と削除関数として実装します。空のリストを宣言し、append()メソッドとpop()メソッドを使用してデータ要素を追加および削除します。

スタックにプッシュ

class Stack:

    def __init__(self):
        self.stack = []

    def add(self, dataval):
# Use list append method to add element
        if dataval not in self.stack:
            self.stack.append(dataval)
            return True
        else:
            return False
# Use peek to look at the top of the stack

    def peek(self):     
	    return self.stack[-1]

AStack = Stack()
AStack.add("Mon")
AStack.add("Tue")
AStack.peek()
print(AStack.peek())
AStack.add("Wed")
AStack.add("Thu")
print(AStack.peek())

上記のコードを実行すると、次の結果が生成されます。

Tue
Thu

スタックからのPOP

スタックから最上位のデータ要素のみを削除できることがわかっているので、それを実行するPythonプログラムを実装します。次のプログラムのremove関数は、最上位の要素を返します。最初にスタックのサイズを計算して最上位の要素をチェックし、次に組み込みのpop()メソッドを使用して最上位の要素を見つけます。

class Stack:

    def __init__(self):
        self.stack = []

    def add(self, dataval):
# Use list append method to add element
        if dataval not in self.stack:
            self.stack.append(dataval)
            return True
        else:
            return False
        
# Use list pop method to remove element
    def remove(self):
        if len(self.stack) <= 0:
            return ("No element in the Stack")
        else:
            return self.stack.pop()

AStack = Stack()
AStack.add("Mon")
AStack.add("Tue")
AStack.add("Wed")
AStack.add("Thu")
print(AStack.remove())
print(AStack.remove())

上記のコードを実行すると、次の結果が生成されます。

Thu
Wed