基于python的数据结构之数组Queue

基于python的数据结构之数组Queue,第1张

概述思路:需要队头队尾指针push *** 作:每次push,head+1pop *** 作:pop队尾,tail+1确保len(Queue)<=array_size到头之后取模返回就行这一点十分重要,这是能够无限进行pop和push的关键计算方法。不管#-*-coding:utf-8-*-#Author:Greed_Vic(PLZ)#Produ

思路:

需要队头队尾指针push *** 作: 每次push, head + 1 pop *** 作: pop队尾,tail + 1 确保len(Queue) <= array_size到头之后取模返回就行 这一点十分重要,这是能够无限进行pop和push的关键计算方法。不管
# -*- Coding:utf-8 -*-# Author:        Greed_Vic(PL Z)# Product_name:  PyCharm# file_name:     arrayQ # @Time:         21:23  2021/6/8class Array(object):    """    定义一个数组    """    def __init__(self, size=32):        self._size = size  # 设置数组长度        self._items = [None] * size  # 开辟数组,初始None    def __getitem__(self, index):        return self._items[index]  # 特殊方法,用来获取此下标的元素    def __setitem__(self, index, value):        self._items[index] = value  # 特殊方法,用来赋值?    def __len__(self):        return self._size  # 特殊方法,获取长度 接受 len(array)    def __iter__(self):        for item in self._items:  # 特殊方法, 接受迭代            yIEld item    def clear(self, value=None):        for i in range(self._items):            self._items[i] = value  # 重置class ArrayQueue(object):    """    数组队列    """    def __init__(self, maxsize=18):        self.maxsize = maxsize        self.array = Array(maxsize)        self.head = 0        self.tail = 0    def push(self, val):        if self.head - self.tail >= self.maxsize:  # 长度队列已经满了            raise Exception('Full ArrayQueue')        self.array[self.head % self.maxsize] = val  # 利用取模的方式进行获取位置        self.head += 1  # 入队一个 head 加一    def pop(self):        if self.tail >= self.head:            raise Exception('Empty ArrayQueue, you should push val first!')  # pop *** 作只能在有数据的情况下进行        val = self.array[self.tail % self.maxsize]        self.tail += 1        return val    def __len__(self):        return self.head - self.tail  # 外界可用 len()方法进行获取长度if __name__ == '__main__':    """    单测    """    def testAQ():        size = 5        q = ArrayQueue(size)        for i in range(size):            print(q.head, q.tail)                    assert len(q) == size        assert q.pop() == 0        assert q.pop() == 1        q.push(9)        assert len(q) == 4        assert q.pop() == 2        assert q.pop() == 3        assert q.pop() == 4        assert q.pop() == 9        print("Test Done!")    testAQ()
总结

以上是内存溢出为你收集整理的基于python的数据结构数组Queue全部内容,希望文章能够帮你解决基于python的数据结构之数组Queue所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1185029.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存