반응형

 저번 글까지 링크드 리스트 3가지를 모두 알아봤습니다. 이번 글에서는 스택에 대해서 알아보도록 하겠습니다.'

 

스택 

 스택(stack)은 굉장히 많이 들어본 자료구조일 것이라고 생각합니다.

스택은 영어로 쌓다라는 뜻이 있는 단어입니다. 이 글에서 설명할 스택도 말그대로 데이터를 쌓는 것입니다.

 

데이터 즉, 노드를 쌓는 스택은 출입구가 하나입니다. 그래서 마지막에 들어간 데이터가 제일 처음 나오게 됩니다.

이것을 LIFO, Last In First Out 이라고 부릅니다.

가장 쉬운 예시로 프링글스 통을 들수 있겠네요. 프링글스 통에 과자를 넣으면 맨 마지막에 들어간 과자가 맨 처음 나오게 됩니다. 이것과 같은 원리로 만들어진 것이 스택이죠.

 

파이썬에서 스택을 구현하는 것은 굉장히 간단합니다. 파이썬에 기본적으로 내장된 리스트를 이용하면 아주 간단하게 만들 수 있습니다.

 

스택 함수

스택에서 가장 중요한 함수는 Push와 Pop입니다.

Push는 데이터를 가장 마지막 부분에 넣는 것이고, Pop은 마지막 데이터를 꺼내는 것입니다.

 

파이썬의 리스트를 활용하면 함수들을 구현하기 매우 간단합니다.

 

class Stack:
    def __init__(self):
        self.size = 0
        self.stack = [] # 리스트 생성
    
    def getSize(self):
        return self.size
    
    def isEmpty(self):
        return self.size == 0
    
    def destroyStack(self):

        while(self.isEmpty() != True):
            Popped = self.Pop() # 모든 값 제거
            print(f'Popped: {Popped}')
        
        del self
    
    
    def Push(self, data):
        self.stack.append(data) # 리스트에 데이터 추가
        self.size += 1

    def Pop(self):
        self.size -= 1
        return self.stack.pop()
    
    def Top(self):
        return self.stack[-1]
    
if __name__ == "__main__":
    stack = Stack()

    for i in range(10):
        stack.Push(i)
    
    print(stack.stack)

    print(stack.Top())

    for i in range(3):
        print(stack.Pop())

    print(stack.stack)

    print(stack.Top())

    stack.destroyStack()

 

반응형

BELATED ARTICLES

more