전에 스택을 직접 구현해본 바 있다.
단순히 리스트를 통해 만들었었는데, 이번에는 파이썬의 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 |
댓글