파이썬 | 간단한 스택 클래스

오늘 저는 우리 모두가 대학에서 읽는 유명하고 기본적이지만 꽤 멋진 데이터 구조에 대해 이야기하고 싶습니다.

스택



스택은 후입선출(LIFO) 원칙을 따르는 선형 데이터 구조입니다. 이는 스택 내부에 삽입된 마지막 요소가 먼저 제거됨을 의미합니다.

스택 데이터 구조는 다른 판 위에 쌓인 판 더미로 생각할 수 있습니다.


여기에서 다음을 수행할 수 있습니다.
  • 새 접시를 위에 얹는다
  • 상단 플레이트를 제거합니다
  • .
  • 그리고 바닥에 접시를 두려면 먼저 위에 있는 접시를 모두 제거해야 합니다. 이것이 바로 스택 데이터 구조가 작동하는 방식입니다.

  • 애플리케이션


  • 단어를 뒤집으려면 - 모든 문자를 스택에 넣고 튀어나오게 합니다. 스택의 LIFO 순서로 인해 문자가 역순으로 표시됩니다.
  • 컴파일러에서 - 컴파일러는 스택을 사용하여 2 + 4 / 5 * (7 - 9) 와 같은 표현식 값을 계산합니다.

  • 브라우저에서 - 브라우저의 뒤로 버튼은 이전에 방문한 모든 URL을 스택에 저장합니다.

  • 스택의 주요 기능


  • 푸시: 새 요소 추가
  • 팝: 마지막에서 요소를 제거합니다
  • .
  • 엿보기: 제거하지 않고 마지막 요소 가져오기

  • 위에 체리



    다음 구현에서는 빌트인 함수를 사용하여 비어 있거나 스택 길이를 확인하는 대신 추가 변수count를 사용하여 이러한 사항을 추적합니다.

    암호




    from typing import Type
    
    class Stack:
    
        elements = []
    
        count = -1
    
        def push(self, data):
            self.elements.append(data)
            self.count += 1
    
        def pop(self) -> int:
            if self.isEmpty() is True:
                raise Exception('Nothing to pop!')
    
            self.count -= 1
            self.elements.pop()
    
        def peek(self):
            if self.isEmpty() is True:
                raise Exception('Cannot peek an empty stack')
    
            return self.elements[self.count]
    
        def isEmpty(self):
            return self.count < 0
    

    좋은 웹페이지 즐겨찾기