pygorithm/stack/stack.py

33 lines
657 B
Python

from typing import Generic, TypeVar
T = TypeVar('T')
class Stack(Generic[T]):
def __init__(self):
self.top: int = 0
self.data: list[T] = []
def push(self, value: T):
self.data.append(value)
self.top += 1
def pop(self) -> T | None:
if self.top > 0:
self.top -= 1
return self.data.pop()
else:
return None
def peek(self) -> T | None:
if self.top > 0:
return self.data[self.top - 1]
else:
return None
def is_empty(self) -> bool:
return self.top == 0
def size(self) -> int:
return self.top