[データ構造]スタック



スタック


スタックの概念


データ構造
LIFO:Last In First Out方式.

スタック内の演算

  • push:データを積み重ねた演算
  • pop:スタック減算データの演算
  • top:スタック上部のデータを返す演算
  • empty:スタックが空であるかどうかの演算を返し、空である場合は1または0を返します.
  • スタックの実装


    Pythonでは、スタックはリストまたは接続リストとして実装されます.
    class Stack:
        def __init__(self) :
            #자료를 저장할 공간(배열) myStack을 만듭니다.
            self.myStack = []
    
        def push(self, n) :
            #stack에 정수 n을 넣는다.
            self.myStack.append(n)
    
        def pop(self) :
            #stack에서 가장 위에 있는 정수를 제거하고, stack에 아무 원소가 없다면 아무 일도 하지 않는다.
            if self.empty() == 1:
                return
            else:
                self.myStack.pop()
    
        def size(self) :
            #stack에 들어 있는 정수의 개수를 return 한다.
            return len(self.myStack)
    
        def empty(self) :
            #stack이 비어있다면 1, 아니면 0을 return 합니다.
            if self.size() == 0:
                return 1
            else:
                return 0
    
        def top(self) :
            #stack의 가장 위에 있는 정수를 return 하고, stack에 들어있는 값이 없을 경우에는 -1을 return 한다.
            if self.empty() == 1:
                return -1
            else:
                return self.myStack[-1]

    スタックの例


    コールスタック


    コンピュータプログラムでは、現在実行されている関数(サブルーチン)を格納する役割を果たします.
    def a(v) :
    	n = b(v)
        return n
        
    def b(v) :
    	m = c(v) * 2
        return m
        
    def c(v) :
        return v ** 2
        
    print(a(5)) #50출력
    returnを実行すると、Stackで実行した関数がポップアップされます.

    写真ソース

  • https://medium.com/@songjaeyoung92/%EC%9E%90%EB%A3%8C%EA%B5%AC%EC%A1%B0-javascript-stack-%EC%9D%B4%EB%9E%80-31f9bbb84897
  • アリスAIトラック