다음 코드 참고
main script
from ds_stack import Stack
from ds_queue import Queue
def test_stack():
print("Testing Stack...")
stack = Stack(10)
# 숫자 1부터 10까지 push + 11도 push
for i in range(1, 12):
stack.push(i)
print(f"Pushed {i}, Stack size: {stack.size()}")
# 모든 요소를 pop
while not stack.is_empty():
print(f"Popped {stack.pop()}, Stack size: {stack.size()}")
# 빈 상태에서 pop 시도
print(f"Popped from empty stack: {stack.pop()}")
def test_queue():
print("\nTesting Queue...")
queue = Queue(10)
# 숫자 1부터 10까지 push + 11도 push
for i in range(1, 12):
queue.push(i)
print(f"Pushed {i}, Queue size: {queue.size()}")
# 모든 요소를 pop.
while not queue.is_empty():
print(f"Popped {queue.pop()}, Queue size: {queue.size()}")
# 빈 상태에서 pop 시도
print(f"Popped from empty queue: {queue.pop()}")
if __name__ == "__main__":
test_stack()
test_queue()
queue
# ds_queue.py
class Queue(list):
def __init__(self, max_size=10):
self.max_size = max_size
super().__init__()
def push(self, item):
if len(self) < self.max_size:
self.append(item)
else:
print(f"Queue is full. Cannot push {item}.")
def pop(self):
if self.is_empty():
return None
return super().pop(0) # FIFO 방식으로 pop
def size(self):
return len(self)
def is_empty(self):
"""리스트가 비어있는지 확인하는 메서드"""
return len(self) == 0
stack
# ds_queue.py
class Stack(list):
def __init__(self, max_size=10):
self.max_size = max_size
super().__init__()
def push(self, item):
if len(self) < self.max_size:
self.append(item)
else:
print(f"Stack is full. Cannot push {item}.")
def pop(self):
if self.is_empty():
return None
return super().pop()
def size(self):
return len(self)
def is_empty(self):
"""리스트가 비어있는지 확인하는 메서드"""
return len(self) == 0
'Python' 카테고리의 다른 글
[Py] 숫자 야구 게임: structured programming, type annotation, and OOP (0) | 2024.11.20 |
---|---|
[DIP] Block Truncation Coding (BTC) (0) | 2024.11.18 |
[Py] 사칙연산 구현 예제 (0) | 2024.11.13 |
[ML] Classic Regressor (Summary) (0) | 2024.10.02 |
[Py] Debug: Error and Exception. (1) | 2024.09.25 |