完成杨辉三角形的打印,请用循环队列实现(利用之前已实现的循环队列数据结构的代码
时间: 2023-09-03 14:08:16 浏览: 219
)。
杨辉三角形是一个由数字组成的三角形,数字排列成类似于三角形的形状,数字的顶部是1,数字的每一行由上一行的相邻元素相加得到。
例如,下面是一个4行的杨辉三角形:
1
1 1
1 2 1
1 3 3 1
实现思路:
1. 定义一个循环队列,队列中每个元素都是一个数组,用来存储杨辉三角形中的每一行;
2. 首先将第一行的数组放入队列中;
3. 从第二行开始,依次计算每个元素的值,并将该行的数组放入队列中;
4. 最后,遍历队列,将杨辉三角形打印出来即可。
代码如下:
```python
class Queue:
def __init__(self, capacity):
self.capacity = capacity
self.front = 0
self.rear = 0
self.queue = [None] * capacity
def is_empty(self):
return self.front == self.rear
def is_full(self):
return (self.rear + 1) % self.capacity == self.front
def enqueue(self, item):
if self.is_full():
return False
self.queue[self.rear] = item
self.rear = (self.rear + 1) % self.capacity
return True
def dequeue(self):
if self.is_empty():
return None
item = self.queue[self.front]
self.front = (self.front + 1) % self.capacity
return item
def size(self):
return (self.rear - self.front + self.capacity) % self.capacity
def clear(self):
self.front = 0
self.rear = 0
def yanghui_triangle(n):
q = Queue(n)
q.enqueue([1]) # 第一行
for i in range(2, n+1):
prev_row = q.dequeue()
curr_row = [1] * i
for j in range(1, i-1):
curr_row[j] = prev_row[j-1] + prev_row[j]
q.enqueue(curr_row)
while not q.is_empty():
row = q.dequeue()
print(' ' * (n - len(row)), end='')
for num in row:
print(num, end=' ')
print()
# 测试
yanghui_triangle(4)
```
输出结果为:
```
1
1 1
1 2 1
1 3 3 1
```
阅读全文