μ€ν μΈλνλ‘μ°(stack underflow)
-> λΉμ΄ μλ μ€νμμ λ°μ΄ν° μμλ₯Ό κΊΌλ΄λ € ν λ
μ€ν μ€λ²νλ‘μ°(stack overflow)
-> κ½ μ°¬ μ€νμ λ°μ΄ν° μμλ₯Ό λ£μΌλ € ν λ
class ArrayStack:
def __init__(self):
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]
from doublylinkedlist import Node
from doublylinkedlist import DoublyLinkedList
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
π κ³Όμ μ 리
Stack λΌμ΄λΈλ¬λ¦¬
from pythonds.basic.stack import Stack
S = Stack()
μ°μ΅λ¬Έμ - μμμ κ΄νΈ μ ν¨μ± κ²μ¬
μκ³ λ¦¬μ¦ μ€κ³ - μμμ μΌμͺ½λΆν° ν κΈμμ© μ½μ΄μ
1. μ¬λ κ΄νΈλ₯Ό λ§λλ©΄ μ€νμ νΈμ
2. λ«λ κ΄νΈλ₯Ό λ§λλ©΄
a. μ€νμ΄ λΉμ΄ μμΌλ©΄ μ¬λ°λ₯΄μ§ μμ μμ
b. μ€νμμ pop, μμ μ΄λ£¨λ μ¬λ κ΄νΈμΈμ§ κ²μ¬
-> λ§μ§ μμΌλ©΄ μ¬λ°λ₯΄μ§ μμ μμ
3. λκΉμ§ κ²μ¬ν ν μ€νμ΄ λΉμ΄ μμ΄μΌ μ¬λ°λ₯Έ μμ