Stack

2022. 12. 29. 15:17CS/자료구조

  • 삽입과 삭제가 상단이라고 불리는 한 곳에서 이루어지는 정렬된 리스트
  • 아이템들은 삽입된 방식의 역순으로 삭제된다.
  • Last - in - First - Out (LIFO)

Stack ADT

  • Create
    - 특정한 크기로 빈 스택을 만드는 함수
  • is_full
    - 스택 안에 있는 요소의 숫자가 스택의 크기와 같으면 True 반환, 다르면 False 반환
  • push
    - isFull == False면, 스택의 최상단에 요소 삽입
  • is_empty
    - 스택이 비어있으면 True 반환, 아니면 False 반환
  • delete
    - is_empty == False면, 최상단 요소 삭제
from arrays import Array

class Stack:
    CAPACITY = 10
    
    def __init__(self, capacity=CAPACITY):
        self.arr = Array(capacity)
        self.capacity = capacity
        self.top = -1
        
    def is_full(self):
        return len(self) >= self.capacity
    
    def is_empty(self):
        return len(self) <= 0
    
    def push(self, elem):
        if self.is_full():
            raise Exception("stack is full.")

        self.top += 1
        self.arr[self.top] = elem
    
    def pop(self):
        if self.is_empty():
            raise Exception("stack is empty.")
        
        self.arr[self.top] = None
        self.top -= 1
        
    def peek(self):
        if self.is_empty():
            raise Exception("stack is empty.")
        
        return self.arr[self.top]
        
    def __len__(self):
        return self.top + 1
    
    def __iter__(self):
        pos = 0
        while pos < len(self):
            yield self.arr[pos]
            pos += 1
            
    def __str__(self):
        return str(self.arr)

 

'CS > 자료구조' 카테고리의 다른 글

Array  (0) 2022.12.22