2020-12-28

python之队列和双端队列

12.28 从来没有一种坚持会被辜负
队列和双端序列用的是顺序表来操作的,比较简单,适合一些初学数据结构,大佬可以给给建议哈。
1.队列

Queue() 创建一个空的队列
enqueue(item) 往队列中添加一个item元素
dequeue() 从队列头部删除一个元素
is_empty() 判断一个队列是否为空
size() 返回队列的大小

class Queue(object):
    """队列"""
    def __init__(self):
        self.list=[]

    def enqueue(self,item):
        """往队列中添加一个item元素"""
        return self.list.append(item)

    def dequeue(self):
        """从队列头部删除一个元素"""
        return self.list.pop(0)

    def is_empty(self):
        """判断队列是否为空"""
        return self.list==[]

    def size(self):
        """返回队列大小"""
        return len(self.list)

if __name__=="__main__":
    ls=Queue()
    ls.enqueue(20)
    ls.enqueue(15)
    ls.enqueue(62)
    ls.enqueue(78)
    print(ls.dequeue())
    print(ls.dequeue())
    print(ls.dequeue())
    print(ls.is_empty())

2.双端队列

Deque() 创建一个空的双端队列
add_front(item) 从队头加入一个item元素
add_rear(item) 从队尾加入一个item元素
remove_front() 从队头删除一个item元素
remove_rear() 从队尾删除一个item元素
is_empty() 判断双端队列是否为空
size() 返回队列的大小

class Deque(object):
    """双端队列"""
    def __init__(self):
        self.list=[]

    def add_front(self,item):
        return self.list.insert(0,item)

    def add_rear(self,item):
        return self.list.append(item)

    def remove_front(self):
        return self.list.pop(0)

    def remove_rear(self):
        return self.list.pop()

    def is_empty(self):
        return self.list==[]

    def size(self):
        return len(self.list)

if __name__=="__main__":
    ls=Deque()
    ls.add_front(20)
    ls.add_front(25)
    ls.add_rear(41)
    ls.add_rear(36)# 25 20 41 36
    print(ls.remove_front())
    print(ls.remove_rear())

马上2021年,我们一起加油哈!!!

你可能感兴趣的:(队列,双端序列,数据结构,python,queue,队列)