스택이란?
스택은 삽입과 삭제가 한쪽 끝에서 이루어지는, 순서가 매겨진 리스트입니다. 끝을 top이라고 부릅니다.
제일 마지막에 추가된 항목이 제일 먼저 삭제됩니다. (Last In First Out, LIFO)
Push : 스택에 항목을 삽입하는 것
Pop : 항목이 스택으로부터 삭제되는 것
Underfolw : 비어있는 스택으로부터 항목을 pop하려는 것
Overflow : 가득 찬 스택에 항목을 push하려는 것
스택 ADT
스택의 구현
# list 이용
class Stack:
def __init__(self):
self.stack = []
def push(self, data):
self.stack.append(data)
def pop(self):
if self.is_empty():
return -1
return self.stack.pop()
def top(self):
if self.is_empty():
return -1
return self.stack[-1]
def is_empty(self):
if len(self.stack) == 0:
return True
return False
# linked list 이용
class Stack:
def __init__(self):
self.top = None
def push(self, data):
new_node = Node(data)
new_node.next = self.top
self.top = new_node
def pop(self):
if self.is_empty():
return -1
data = self.top.data
self.top = self.top.next
return data
def top(self):
if self.is_empty():
return -1
return self.top.data
def is_empty(self):
if self.top == None:
return True
return False