# 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

BEFORE


7강 이중 연결 리스트

NEXT


9강 큐, 큐의 구현