LIFO(Last In First Out)의 구조를 가지고 있다. 마지막에 저장한 데이터가 처음으로 읽힌다.
Stack에서의 데이터 저장은 push
데이터를 읽어들이는 것은 pop
이라고 한다. pop
은 데이터를 읽어들임과 동시에 stack에서 삭제한다.
Stack Python 예제
class Stack:
def __init__(self):
self._stack = []
def push(self,data):
self._stack.append(data)
def pop(self):
if len(self._stack) == 0:
return None
data = self._stack[-1]
del self._stack[-1]
return data
def peek(self):
if len(self._stack) == 0:
return None
return self._stack[-1]
웹 브라우저의 방문기록(뒤로가기), 실행취소등이 stack으로 구현될수 있다.
FIFO(First In First Out)의 구조를 가지고 있다. 즉, 데이터가 들어온 순서대로 처리된다. 맛집에 늘어선 줄과같이 맨 처음으로 들어온(push) 데이터가 가장 먼저 나간다(pop).
Queue Python 예제
class Queue:
def __init__(self):
self.waiting = []
def is_empty(self):
return len(self.waiting) == 0
def enqueue(self,person):
self.waiting.append(person)
print(f"{person}이 대기줄에 추가되었습니다.")
def dequeue(self):
if self.is_empty():
return "대기자 없음!"
else:
return self.waiting.pop()
def front(self):
if self.is_empty():
return "대기자 없음!"
else:
return self.waiting[-1]
def print_queue(self):
print(f"저희 대기 손님은 {self.waiting}으로 총 {len(self.waiting)} 명이 대기중입니다.")
OS 프로세스 스케쥴링 시스템, 밋집 예약 시스템등이 Queue로 구현될수 있다.