设计顺序循环队列的Python实例:使用头指针和计数器管理队列操作
首先,我们需要设计一个顺序循环队列的抽象数据模型。这个模型包括以下几个部分:
1. 初始化:创建一个空队列。
2. 入队列:将元素添加到队尾。
3. 出队列:从队头移除元素。
4. 判断队列是否为空:检查队列是否为空。
5. 设置队列的最大容量:限制队列的大小。
接下来,我们将使用Python编写一个顺序循环队列的例子,并测试上述功能。
```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()
```
免责声明:
以上内容除特别注明外均来源于网友提问,创作工场回答,未经许可,严谨转载。