输入1-10的数字组成普通线性队列; (2)判断此时队列的队首元素; (3)打印出队列操作后的队首元素; (4)由于普通线性队列的限制,此时尝试使用循环队列来解决上述问题。
时间: 2024-11-22 18:36:02 浏览: 9
在程序设计中,我们可以创建一个简单的线性队列来存储1到10的整数。这里我们假设队列有一个固定大小,例如5,使用数组实现。以下是基本步骤:
1. **创建普通线性队列**:
- 初始化一个长度为5的数组,用于存储数据,比如`queue = [None, None, None, None, None]`。
- 当输入值小于等于10时,遍历数组并将每个新输入值添加到队尾,如果满了则从队头删除旧的元素,直到队列有空间。
```python
class LinearQueue:
def __init__(self):
self.queue = [None] * 5
self.front = 0
self.rear = 0
def enqueue(self, value):
if self.rear == len(self.queue) - 1: # 队尾满
self.shift_elements()
self.queue[self.rear] = value
self.rear += 1
def shift_elements(self): # 如果队尾溢出,则将元素移到队头
for i in range(len(self.queue) - 1, self.front - 1, -1):
self.queue[i] = self.queue[i - 1]
self.queue[self.front - 1] = None
self.front += 1
```
2. **判断队首元素**:
- 只需要查看`front`指针指向的值即可,如果没有元素,返回None。
```python
def is_empty(self):
return self.front == self.rear
def get_front(self):
if not self.is_empty():
return self.queue[self.front]
else:
return None
```
3. **打印队首元素**:
- 使用`get_front()`方法获取队首元素并打印。
```python
def print_front(queue):
front_element = queue.get_front()
if front_element is not None:
print(f"当前队首元素为: {front_element}")
else:
print("队列为空")
```
4. **转换成循环队列**:
- 循环队列可以避免上述的问题,它不需要预先设定固定大小,而是通过增加两个额外的变量`size`(当前有效元素的数量)和`modulus`(模数,表示队列实际位置),来实现动态扩容和收缩。
```python
class CircularQueue:
def __init__(self):
self.queue = [None] * 10
self.size = 0
self.modulus = 10
# ...其他同理的操作方法,只是需要对索引进行取模处理...
```
阅读全文