aiaiask.com©

开花即结果 提问即答案

设计顺序循环队列的Python实例:使用头指针和计数器管理队列操作
原始问题:

设计顺序循环队列的Python实例:使用头指针和计数器管理队列操作

首先,我们需要设计一个顺序循环队列的抽象数据模型。这个模型包括以下几个部分:

  1. 初始化:创建一个空队列。
  2. 入队列:将元素添加到队尾。
  3. 出队列:从队头移除元素。
  4. 判断队列是否为空:检查队列是否为空。
  5. 设置队列的最大容量:限制队列的大小。

接下来,我们将使用Python编写一个顺序循环队列的例子,并测试上述功能。

class CircularQueue:
    def __init__(self, max_size=10):
        self.queue = [None] * max_size
        self.head = self.tail = 0
        self.max_size = max_size
        self.count = 0

    def enqueue(self, item):
        if self.is_full():
            raise Exception("队列已满")
        self.queue[self.tail] = item
        self.tail = (self.tail + 1) % self.max_size
        self.count += 1

    def dequeue(self):
        if self.is_empty():
            raise Exception("队列为空")
        item = self.queue[self.head]
        self.head = (self.head + 1) % self.max_size
        self.count -= 1
        return item

    def is_empty(self):
        return self.count == 0

    def is_full(self):
        return self.count == self.max_size

def main():
    cq = CircularQueue()
    cq.enqueue(1)
    cq.enqueue(2)
    cq.enqueue(3)
    cq.enqueue(4)
    cq.enqueue(5)
    cq.enqueue(6)
    cq.enqueue(7)
    cq.enqueue(8)
    cq.enqueue(9)
    cq.enqueue(10)

    print("出队3个元素:", cq.dequeue(), cq.dequeue(), cq.dequeue())
    cq.enqueue(11)
    cq.enqueue(12)
    cq.enqueue(13)
    cq.enqueue(14)
    cq.enqueue(15)
    cq.enqueue(16)
    cq.enqueue(17)
    cq.enqueue(18)
    cq.enqueue(19)
    cq.enqueue(20)
    cq.enqueue(21)
    cq.enqueue(22)
    cq.enqueue(23)
    cq.enqueue(24)
    cq.enqueue(25)
    cq.enqueue(26)
    cq.enqueue(27)
    cq.enqueue(28)
    cq.enqueue(29)
    cq.enqueue(30)
    cq.enqueue(31)
    cq.enqueue(32)
    cq.enqueue(33)
    cq.enqueue(34)
    cq.enqueue(35)
    cq.enqueue(36)
    cq.enqueue(37)
    cq.enqueue(38)
    cq.enqueue(39)
    cq.enqueue(40)
    cq.enqueue(41)
    cq.enqueue(42)
    cq.enqueue(43)
    cq.enqueue(44)
    cq.enqueue(45)
    cq.enqueue(46)
    cq.enqueue(47)
    cq.enqueue(48)
    cq.enqueue(49)
    cq.enqueue(50)
    print("出队所有元素:", end=" ")
    for _ in range(50):
        print(cq.dequeue(), end=" ")
    print()
    print("队列剩余元素数量:", cq.count)
    print("队列最大容量:", cq.max_size)

if __name__ == "__main__":
    main()
设计顺序循环队列的Python实例:使用头指针和计数器管理队列操作
https://www.aiaiask.com/ask/51539.html
AI / 模型iFLYTEK
时间 / DATEOctober 30, 2023, 3:07 PM
语言zh-CN
IP / 区域广东 云浮