어떤 언어든 주요 Procedure를 담당하는 Main함수가 있고, 그 위에 여러 function들을 구동한다. 이 때 함수를 실행 순서에 따라 메모리에서 불러와서 로딩시키는 Call Stack이 바로 Stack이다.
위 사진의 코드처럼 doJob()이라는 함수를 수행하면 printLog함수를 실행하고 그 안에서 console.log()함수를 실행한 후 다시 printLog함수를 닫고 doJob함수로 돌아가서 다음 실행을 한 다음 main으로 돌아가는 일련의 과정 속에서 함수들의 실행 순서는 Stack에 Push된 다음 Pop된다.
class Stack:
def __init__(self):
self.state = []
def push(self, data):
self.state.append(data) # 데이터를 스택에 push 하는 것을 구현
def pop(self):
popData = self.state[-1]
del self.state[-1]
return popData # 데이터를 스택에서 pop 해서 그 값을 리턴
def getPeak(self):
return self.state[-1] # 스택의 최상위 값을 리턴하도록 구현.
class Queue:
def __init__(self):
self.state = []
def enqueue(self, person):
self.state.append(person)
print("Result : ", self.state)
# 데이터를 큐에 enqueue 하는 것을 구현
def dequeue(self):
deqData = self.state[0]
del self.state[0]
print("Result : ", self.state)
return deqData
# 데이터를 큐에서 dequeue 해서 그 값을 리턴하도록 구현
def getFirst(self):
print("Result : ", self.state, "First : ", self.state[0])
return self.state[0]
# 큐의 가장 먼저 들어온 값을 리턴하도록 구현 해 주세요