Stack
2022. 12. 29. 15:17ㆍCS/자료구조
- 삽입과 삭제가 상단이라고 불리는 한 곳에서 이루어지는 정렬된 리스트
- 아이템들은 삽입된 방식의 역순으로 삭제된다.
- Last - in - First - Out (LIFO)

Stack ADT
- Create
- 특정한 크기로 빈 스택을 만드는 함수 - is_full
- 스택 안에 있는 요소의 숫자가 스택의 크기와 같으면 True 반환, 다르면 False 반환 - push
- isFull == False면, 스택의 최상단에 요소 삽입 - is_empty
- 스택이 비어있으면 True 반환, 아니면 False 반환 - delete
- is_empty == False면, 최상단 요소 삭제
from arrays import Array
class Stack:
CAPACITY = 10
def __init__(self, capacity=CAPACITY):
self.arr = Array(capacity)
self.capacity = capacity
self.top = -1
def is_full(self):
return len(self) >= self.capacity
def is_empty(self):
return len(self) <= 0
def push(self, elem):
if self.is_full():
raise Exception("stack is full.")
self.top += 1
self.arr[self.top] = elem
def pop(self):
if self.is_empty():
raise Exception("stack is empty.")
self.arr[self.top] = None
self.top -= 1
def peek(self):
if self.is_empty():
raise Exception("stack is empty.")
return self.arr[self.top]
def __len__(self):
return self.top + 1
def __iter__(self):
pos = 0
while pos < len(self):
yield self.arr[pos]
pos += 1
def __str__(self):
return str(self.arr)