기본 스택

스택

: 자료 data elemet 를 보관할 수 있는 (선형) 구조

스택의 추상적 자료구조 구현

  1. 배열 array을 이용하여 구현

    class ArrayStack:
    
    	def __init__(self): # Constructor Method
    			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] # 스택의 꼭대기 원소 반환
    
  2. 연결 리스트 linked list를 이용하여 구현

    from doublylinkedlist import Node
    from doublylinkedlist import DoublyLinkedList
    
    class LinkedListStack:
    
    	def __init__(self):
    		self.data = DoublyLinkedList() # 비어있는 dl로 초기화
    
    	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
    
  3. 라이브러리

    from pythonds.basic.stack import Stack
    S = Stack() # Stack 초기화
    dir(S) # method 보기 
    

연습문제 - 수식의 괄호 유효성 검사