• 数据结构 之 '队列'


    队列

    一、概念

    队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列

    队列的数据元素又称为队列元素。在队列中插入一个队列元素称为入队,从队列中删除一个队列元素称为出队。因为队列只允许在一端插入,在另一端删除,所以只有最早进入队列的元素才能最先从队列中删除,故队列又称为先进先出(FIFO—first in first out)线性表

    二、队列的特点:先进先出

    代码实现

    class Queue():
        def __init__(self):
            """
            初始化队列
            """
            self.items = []
    
        def enqueue(self, item):
            """
            入队
            :param item:
            :return:
            """
            self.items.insert(0, item)
    
        def dequeue(self):
            """
            出队
            :return:
            """
            return self.items.pop()
    
        def size(self):
            """
            队列元素个数
            :return:
            """
            return len(self.items)
    
        def isEmpty(self):
            """
            是否为空队列
            :return:
            """
            return self.items == []
    
    
    if __name__ == '__main__':
        q = Queue()
        q.enqueue(1)
        q.enqueue(2)
        q.enqueue(3)
    
        print(q.dequeue())
        print(q.dequeue())
        print(q.dequeue())
    
    
    # 1
    # 2
    # 3
    
    # 队列这种数据结构的特点:先进先出
    

    两个队列实现栈

    q1 = Queue()
    q2 = Queue()
    lst = [1, 2, 3, 4, 5]
    for i in lst:
        q1.enqueue(i)
    
    while q1.size() >= 1:
        while q1.size() > 1:
            q2.enqueue(q1.dequeue())
        print(q1.dequeue())
        q1, q2 = q2, q1
    
    # 5
    # 4
    # 3
    # 2
    # 1
    
  • 相关阅读:
    @override报错
    idea快捷键
    java中getAttribute与getParameter的区别
    localStorage基于浏览器的本地存储
    js画布组件(<canvas></canvas>)
    easyui
    关于Bootstrap
    使用layUI美化的登录功能
    EXT JS
    ★一些文章链接
  • 原文地址:https://www.cnblogs.com/fengting0913/p/13304312.html
Copyright © 2020-2023  润新知