본문 바로가기
스터디노트/자료구조

[보충] collections.deque로 스택과 큐 구현하기

by 수완동날다람쥐 2021. 4. 8.

전에 스택을 직접 구현해본 바 있다.

 

3. 스택과 큐

이번 글부터는 파이썬의 typing을 사용해보려고 한다. [잡담] 파이썬의 타입 힌트와 typing, mypy를 알아보자! 0. Intro 파이썬은 동적 타이핑 언어이다. 다시 말해, 하나의 변수가 타입에 구애받지 않는

flyingsquirrel.tistory.com

단순히 리스트를 통해 만들었었는데, 이번에는 파이썬의 collections 라이브러리 중 deque 라는 모듈을 이용해 스택과 큐를 구현해보고자 한다.

from typing import Any
from collections import deque

class Stack:
    def __init__(self, maxlen: int = 256) -> None:
        self.capacity = maxlen
        self.__stk = deque([], maxlen)

    def __len__(self) -> int:
        return len(self.__stk)

    def is_empty(self) -> bool:
        return not self.__stk

    def is_full(self) -> bool:
        return len(self.__stk) == self.__stk.maxlen

    def push(self, value: Any) -> None:
    	# 큐: return self.__stk.insert(value)
        self.__stk.append(value)

    def pop(self) -> Any:
        # 큐: return self.__stk.pop(0)
        return self.__stk.pop()

    def peek(self) -> Any:
    	# 큐: return self.__stk[0]
        return self.__stk[-1]

    def clear(self) -> None:
        self.__stk.clear()

    def find(self, value: Any) -> Any:
        try:
            return self.__stk.index(value)
        except:
            return -1

    def count(self, value: Any) -> bool:
        return self.__stk.count(value)

    def __contains__(self, value: Any) -> bool:
        return self.count(value)

    def dump(self) -> None:
        if self.is_empty():
            print('Stack is Empty')
        else:
            print(list(self.__stk))

설명은 전 포스트 참고, 코드들이 간단해졌다.

'스터디노트 > 자료구조' 카테고리의 다른 글

4. 재귀 알고리즘  (0) 2021.04.15
3. 스택과 큐  (0) 2021.04.01
2. 검색 알고리즘  (0) 2021.03.23
1. 기본 자료구조와 배열  (0) 2021.03.14

댓글