2025-07-30 21:01

Status:

Tags:자료구조

스택

  • LIFO 로 작동하는 자료구조
  • stack of plates 라는 쌓여진 접시 상상 맨위만 올리고 또 뺄 수 있음
  • push, pop, peek(Top) 연산
  • 배열연결 리스트로 구현 가능, 배열은 빠르지만 공간 고정, 연결리스트는 좀더 메모리쓰고 느리지만 유동
  • 오버 플로우: 배열 가득 찼을때
  • 언더 플로우: 배열 비어있는데 pop 하려 할때
  • 엄밀히 말하면 스택 자체는 자료구조가 아니라 연산을 정의한 추상 데이터 타입임.
class Stack:
    def __init__(self):
        self._items = []
    def push(self, item):
        self._items.append(item)
    def pop(self):
        if not self.is_empty():
            return self._items.pop()
        raise IndexError("Pop from empty stack")
    def peek(self):
        if not self.is_empty():
            return self._items[-1]
        raise IndexError("Peek from empty stack")
    def is_empty(self):
        return len(self._items) == 0
    def size(self):
        return len(self._items)

이렇게 파이썬에서 쓸 수 있지만 그냥 배열 append랑 pop 가능해서 그냥 배열연산하면 된다.

References

배열 연결 리스트 스택(Stack) 핸드북