python 实现队列

5 阅读1分钟
class DataQueue:
    """队列。先进先出"""
    def __init__(self, elements:list=[]) -> None:
        self.__data__=list()
        for element in elements:
            if element not in self.__data__:
                self.__data__.append(element)

    def __repr__(self) -> str:
        """print函数打印该对象所显示的内容"""
        return self.__data__.__repr__()

    def __len__(self):
        """Return len(self)."""
        return self.__data__.__len__()

    def __iter__(self):
        """Implement iter(self)."""
        return self.__data__.__iter__()

    def __next__(self):
        return self.__data__.__next__()

    def enqueue(self, element):
        """入队。向队列尾部添加元素"""
        # 若存在,则不再进入队列
        if element in self.__data__:
            return None
        return self.__data__.append(element)

    def dequeue(self):
        """出队。若队列为空,则返回None。移除队列头部的元素。"""
        if self.__data__:
            return self.__data__.pop(0)
        return None

    def clear(self):
        """清空队列"""
        return self.__data__.clear()

    @property
    def length(self):
        """队列长度"""
        return len(self.__data__)

    @property
    def is_empty(self):
        """是否空队列"""
        return len(self.__data__) == 0