스택은 데이터의 삽입과 삭제가 데이터의 가장 한쪽 끝에서만 일어나며 가장 마지막에 삽입된 데이터가 가장 먼저 사용되거나 삭제되는 후입선출 (LIFO - Last In, First Out) 방식을 따르는 자료구조이다.
데이터를 삽입하는 과정을 push,
가장 마지막에 삽입한 데이터를 삭제하는 과정을 pop이라고 부른다.
데이터를 삭제하는 pop의 경우 현재 스택에 데이터가 비어있는지 여부를 먼저 확인(isEmpty)한 후에 실행한다.
pop이 가장 마지막에 삽입한 데이터를 삭제하는 것이라면
peek은 가장 마지막에 삽입한 데이터를 삭제하지 않고 return 해주는 메소드이다.
isEmpty는 현재 스택이 비어있는지 여부를 확인하는 메소드 입니다.
파이썬의 경우 List 자료형을 사용해서 바로 스택 자료구조 구현이 가능하다 push는 append로 pop은 pop으로... 굳이 List 자료형을 이용해서 클래스로 구현을 하자면 다음과 같이 구현할 수 있을 것이다.
class Stack():
def __init__(self):
self.stack = []
def push(self, data):
self.stack.append(data)
def pop(self):
pop_object = None
if self.isEmpty():
print("Stack is Empty")
else:
pop_object = self.stack.pop()
return pop_object
def peek(self):
peek_object = None
if self.isEmpty():
print("Stack is Empty")
else:
peek_object = self.stack[-1]
return peek_object
def isEmpty(self):
is_empty = False
if len(self.stack) == 0:
is_empty = True
return is_empty
이 외의 연산도 쉽게 구현할 수 있을 것이다.