본문 바로가기
Base/Python

28. 컴포지션으로 스택(Stack)과 큐(Queue) 구현

by 귀멸 2023. 6. 30.

혼공파 86강

 

1. 스택

# 스택(Stack)
# 선입후출(First in Last out FILO) 구조를 갖는 자료 구조
# 후입선출(Last in First out LIFO) 구조를 갖는 자료 구조
# 푸시(Push): 스택 안에 자료를 넣는 행위
# 팝(Pop): 스택에서 자료를 꺼내는 행위

class Stack:
    def __init__(self):
        self.__list = []
    def push(self, value):
        self.__list.append(value)
    def pop(self):
        output = self.__list[-1]
        del self.__list[-1]
        return output


stack = Stack()
stack.push(10) # [10]
stack.push(20) # [10, 20]
stack.push(30) # [10, 20, 30]
print(stack.pop())  # 30 [10, 20]
print(stack.pop())  # 20 [10]
print(stack.pop())  # 10

2. 큐

# 큐(queue)
# 선입선출 (First In First Out : FIFO) 구조를 갖는 자료구조
# 인큐(enqueue) : 큐에 자료를 넣는 행위
# 디큐(dequeue) : 큐에서 자료를 꺼내는 행위

class Queue:
    def __init__(self):
        self.__list = []
    def enqueue(self, value):
        self.__list.append(value)
    def dequeue(self):
        output = self.__list[0]
        del self.__list[0]
        return output        

queue = Queue()
queue.enqueue(10) # [10]
queue.enqueue(20) # [10, 20]
queue.enqueue(30) # [10, 20 , 30]
print(queue.dequeue())     # 10 [20, 30]
print(queue.dequeue())     # 20 [30]
print(queue.dequeue())     # 30 []

 

'Base > Python' 카테고리의 다른 글

30. 모듈 만들기  (0) 2023.07.05
29. 모듈 기본 문법 및 기본 내장 모듈  (0) 2023.07.01
27. 상속(Inheritance)과 컴포지션(Composition)  (0) 2023.06.30
26. 캡슐화  (0) 2023.06.29
25. 특수한 이름의 함수, 값 객체  (0) 2023.06.29

댓글