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 가능해서 그냥 배열연산하면 된다.