• 队列的python实现


    队列(queue),是一种操作受限的线性表。只允许在队列的一端添加元素,在队列的另一端删除元素。能添加元素的一端称为队尾,能删除元素的一端称为队头。

    队列最大的特性是:先进先出(FIFO,first in first out)

    下面为普通队列的python实现:

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    __author__ = "hsz"
    
    
    class Queue(object):
        """队列"""
        def __init__(self, maxsize=0):
            """maxsize<=0代表队列不限定大小"""
            self.queue = []
            self.maxsize = maxsize
    
        def is_empty(self):
            return len(self.queue) == 0
    
        def is_full(self):
            if self.maxsize <= 0:
                return False
            else:
                return len(self.queue) == self.maxsize
    
        def enqueue(self, item):
            """入队"""
            if self.is_full():
                raise Exception("Queue is full!")
            else:
                self.queue.append(item)
    
        def dequeue(self):
            """出队"""
            if self.is_empty():
                raise IndexError("Queue is empty!")
            else:
                return self.queue.pop(0)
    
        def size(self):
            return len(self.queue)
    
        def get_front(self):
            """
            返回队头元素
            :return:
            """
            if self.is_empty():
                raise IndexError("Queue is empty!")
            else:
                return self.queue[0]
    
        def get_rear(self):
            """
            返回队尾元素
            :return:
            """
            if self.is_empty():
                raise IndexError("Queue is empty!")
            else:
                return self.queue[-1]
    
        def print_queue(self):
            return self.queue
    
    
    if __name__ == "__main__":
        # 实例化对象队列
        queue = Queue()
        # 入队四个数
        queue.enqueue(1)
        queue.enqueue(2)
        queue.enqueue(3)
        queue.enqueue(4)
        print(queue.queue)       # [1, 2, 3, 4]
        print(queue.is_empty())  # False   队列不为空
        print(queue.is_full())   # False   队列没有到最大元素
        # 出队  先入先出  出的是1 所有剩 [2,3,4]
        queue.dequeue()
        print(queue.queue)
        # 返回队列的元素个数 3
        print(queue.size())
        # 获取队列的头数据  2
        print(queue.get_front())
        # 获取队列的尾数据  4
        print(queue.get_rear())
        # 打印队列所有数据 [2,3,4]
        print(queue.print_queue())

    打印结果为:

    [1, 2, 3, 4]
    False
    False
    [2, 3, 4]
    3
    2
    4
    [2, 3, 4]

    其他类型待续。。。

  • 相关阅读:
    计算机执行程序代码的过程分析
    iOS 操作系统架构
    ios 概况了解
    android ApplicationContext Context Activity 内存的一些学习
    android 内存优化一
    android 学习
    ios 基础学习二
    ios 集合总结
    线程之间的通讯---SynchronizationContext
    ASP.NET Core 身份验证及鉴权
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/11734591.html
Copyright © 2020-2023  润新知