zoukankan      html  css  js  c++  java
  • 队列-Python 实现

    用 Python 来实现 队列和双端队列, 直接上代码理解即可. 队列蛮好理解的, 就是模拟咱生活中的排队. 先进, 先出嘛.

    """
    队列 - ADT
    队列 Queue 被构造为在队尾添加元素, 队首删除元素的有序集合, FIFO
    
    Queue(): 创建一个空队列
    enqueue(itme): 入队, 将元素添加到队尾
    dequeue(): 出队, 删除队首元素并返回
    is_empty(): 判断队列是否为空
    sise(): 返回队列中的元素个数
    
    思路:
        用 list 作为底层, 约定, 最左端为队尾, 最右端为队首
    
    """
    
    class Queue:
        def __init__(self):
            self.items = []
    
        def enqueue(self, item):
            """添加元素到队尾"""
            self.items.insert(0, item)
    
        def dequeue(self):
            """删除队首元素并返回"""
            return self.items.pop()
    
        def is_empty(self):
            return self.items == []
    
        def size(self):
            return len(self.items)
    
    
    if __name__ == '__main__':
        q = Queue()
    
        for i in range(1,6):
            q.enqueue(i)
        print(q.size())
    
        print(q.dequeue())
        print(q.dequeue())
    
        print(q.is_empty())
    
    

    Dquue - 双端队列

    """
    Deque
    
    双端队列被构造为项的集合, 可以从队首或队尾任意一段增删元素.
    
    Deque(): 创建一个新的Deque
    
    add_front(item): 从队首添加元素
    add_rear(item): 从队尾添加元素
    
    remove_front(item): 从队首删除元素, 并返回
    remove_rear(item): 从队尾删除元素, 并返回
    
    is_empty(): 判断队列是否空
    size(): 返回队列中的项数
    
    思路:
        用 list 作为底层架构, 并约定, 最左边为对尾, 最右侧为对首
    
    """
    
    
    class Deque:
        def __init__(self):
            self.items = []
    
        def add_front(self, item):
            """队首添加元素"""
            self.items.append(item)
    
        def remove_front(self):
            """队首删除元素"""
            return self.items.pop()
    
        def add_rear(self, item):
            """队尾添加元素"""
            self.items.insert(0, item)
    
        def remove_rear(self):
            """删除队尾元素"""
            return self.items.pop(0)
    
        def is_empty(self):
            return self.items == []
    
        def size(self):
            return len(self.items)
    
    
    if __name__ == '__main__':
        dq = Deque()
    
        for i in range(3):
            dq.add_front(i)
        print(dq.size())
    
        dq.add_rear(-1)
        print(dq.remove_front())
    
        print(dq.size())
    
  • 相关阅读:
    python eval lmbda
    python函数--day14-03
    深浅拷贝--day14-02
    数据结构与算法--排序
    数据结构与算法--栈(stack)与队列(queue)
    完全背包的计数问题
    [题解] Codeforces Round #568 (Div. 2) C题题解
    [题解] Codeforces Round #640 (Div. 4) C题 题解
    数据结构——程序设计(一)单链表功能的操作与实现
    [题解] Codeforces Round #708 (Div. 2) C1 题解报告
  • 原文地址:https://www.cnblogs.com/chenjieyouge/p/12459832.html
Copyright © 2011-2022 走看看