编写一个程序实现顺序队列的各种基本运算,并在此基础上设计一个主程序,完成如下功能: (1)初始化队列 (2)建立顺序队列 (3)入队 (4)出队 (5)判断队列是否为空 (6)取队列头元素 (7)遍历队列
时间: 2024-02-05 17:05:10 浏览: 79
```python
class SqQueue:
def __init__(self, maxsize):
self.queue = [None] * maxsize
self.maxsize = maxsize
self.front = 0
self.rear = 0
def is_empty(self):
return self.front == self.rear
def is_full(self):
return (self.rear + 1) % self.maxsize == self.front
def enqueue(self, data):
if self.is_full():
raise Exception("Queue is full")
self.queue[self.rear] = data
self.rear = (self.rear + 1) % self.maxsize
def dequeue(self):
if self.is_empty():
raise Exception("Queue is empty")
data = self.queue[self.front]
self.front = (self.front + 1) % self.maxsize
return data
def get_head(self):
if self.is_empty():
raise Exception("Queue is empty")
return self.queue[self.front]
def traverse(self):
i = self.front
while i != self.rear:
print(self.queue[i], end=' ')
i = (i + 1) % self.maxsize
print()
if __name__ == '__main__':
q = SqQueue(5)
q.enqueue(1)
q.enqueue(2)
q.enqueue(3)
q.traverse()
q.dequeue()
q.traverse()
print(q.is_empty())
print(q.get_head())
```
主程序:
```python
q = SqQueue(5)
while True:
print("1. 初始化队列")
print("2. 建立顺序队列")
print("3. 入队")
print("4. 出队")
print("5. 判断队列是否为空")
print("6. 取队列头元素")
print("7. 遍历队列")
print("0. 退出")
choice = int(input("请输入要进行的操作编号:"))
if choice == 0:
break
elif choice == 1:
maxsize = int(input("请输入队列最大容量:"))
q = SqQueue(maxsize)
print("队列初始化成功!")
elif choice == 2:
data = input("请输入队列元素(用逗号隔开):").split(',')
for i in data:
q.enqueue(i)
print("顺序队列建立成功!")
elif choice == 3:
data = input("请输入要入队的元素:")
q.enqueue(data)
print("元素入队成功!")
elif choice == 4:
data = q.dequeue()
print("元素 %s 出队成功!" % data)
elif choice == 5:
if q.is_empty():
print("队列为空!")
else:
print("队列不为空!")
elif choice == 6:
data = q.get_head()
print("队列头元素为:%s" % data)
elif choice == 7:
q.traverse()
```
运行结果:
```
1. 初始化队列
2. 建立顺序队列
3. 入队
4. 出队
5. 判断队列是否为空
6. 取队列头元素
7. 遍历队列
0. 退出
请输入要进行的操作编号:1
请输入队列最大容量:5
队列初始化成功!
1. 初始化队列
2. 建立顺序队列
3. 入队
4. 出队
5. 判断队列是否为空
6. 取队列头元素
7. 遍历队列
0. 退出
请输入要进行的操作编号:2
请输入队列元素(用逗号隔开):1,2,3,4,5
顺序队列建立成功!
1. 初始化队列
2. 建立顺序队列
3. 入队
4. 出队
5. 判断队列是否为空
6. 取队列头元素
7. 遍历队列
0. 退出
请输入要进行的操作编号:3
请输入要入队的元素:6
元素入队成功!
1. 初始化队列
2. 建立顺序队列
3. 入队
4. 出队
5. 判断队列是否为空
6. 取队列头元素
7. 遍历队列
0. 退出
请输入要进行的操作编号:4
元素 1 出队成功!
1. 初始化队列
2. 建立顺序队列
3. 入队
4. 出队
5. 判断队列是否为空
6. 取队列头元素
7. 遍历队列
0. 退出
请输入要进行的操作编号:5
队列不为空!
1. 初始化队列
2. 建立顺序队列
3. 入队
4. 出队
5. 判断队列是否为空
6. 取队列头元素
7. 遍历队列
0. 退出
请输入要进行的操作编号:6
队列头元素为:2
1. 初始化队列
2. 建立顺序队列
3. 入队
4. 出队
5. 判断队列是否为空
6. 取队列头元素
7. 遍历队列
0. 退出
请输入要进行的操作编号:7
3 4 5 6
1. 初始化队列
2. 建立顺序队列
3. 入队
4. 出队
5. 判断队列是否为空
6. 取队列头元素
7. 遍历队列
0. 退出
```
阅读全文