zoukankan      html  css  js  c++  java
  • 队列的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 常用第三方类库、完整APP示例
    iOS 键盘遮挡输入 解决办法
    iOS UIColor RGB HEX
    iOS APP性能优化
    iOS Swift 数组 交换元素的两种方法
    iOS CoreData primitive accessor
    iOS Start developing ios apps (OC) pdf
    iOS 传值方式
    iOS IB_DESIGNABLE IBInspectable @IBDesignable @IBInspectable 加速UI开发
  • 原文地址:https://www.cnblogs.com/hszstudypy/p/11734591.html
Copyright © 2011-2022 走看看