이번에는 자료구조 중 특정한 문제를 풀기위한 스택(Stacks)에 대해서 알아보도록 하겠습니다!
(1) 초기 상태: 비어 있는 스택(empty stack)
(2) 데이터 원소 A를 스택에 추가
(3) 데이터 원소 꺼내기
(1) 배열 (array)을 이용하여 구현
(2) 연결 리스트(linked list)를 이용하여 구현
class ArrayStack:
def __init__(self):
self.data = [] # 빈 스택을 초기화
def size(self):
return len(self.data)
def isEmpty(self):
return self.size() == 0
def push(self, item):
self.data.append(item)
def pop(self):
return self.data.pop()
def peek(self):
retrun self.data[-1]
from doublylinkedlist import Node
from doublylinkedlist import DoublyLinkedList
class ArrayStack:
def __init__(self):
self.data = []
def size(self):
return len(self.data)
def isEmpty(self):
return self.size() == 0
def push(self, item):
self.data.append(item)
def pop(self):
return self.data.pop()
def peek(self):
return self.data[-1]
class LinkedListStack:
def __init__(self):
self.data = DoublyLinkedList()
def size(self):
return self.data.getLength()
def isEmpty(self):
return self.size() == 0
def push(self, item):
node = Node(item)
self.data.insertAt(self.size() + 1, node)
def pop(self):
return self.data.popAt(self.size())
def peek(self):
return self.data.getAt(self.size()).data
올바른 수식:
올바르지 않은 수식:
알고리즘 설계