c++链队列输出杨辉三角
时间: 2023-10-22 08:15:37 浏览: 120
杨辉三角的队列方式输出
```c
#include <stdio.h>
#include <stdlib.h>
#define MAXSIZE 100 // 定义队列最大长度
typedef struct {
int data[MAXSIZE];
int front;
int rear;
} Queue;
void InitQueue(Queue *Q) // 初始化队列
{
Q->front = 0;
Q->rear = 0;
}
int QueueEmpty(Queue Q) // 判断队列是否为空
{
if (Q.front == Q.rear) {
return 1;
} else {
return 0;
}
}
int EnQueue(Queue *Q, int x) // 入队操作
{
if ((Q->rear + 1) % MAXSIZE == Q->front) {
return 0; // 队列已满
} else {
Q->data[Q->rear] = x;
Q->rear = (Q->rear + 1) % MAXSIZE;
return 1;
}
}
int DeQueue(Queue *Q, int *x) // 出队操作
{
if (QueueEmpty(*Q)) {
return 0; // 队列为空
} else {
*x = Q->data[Q->front];
Q->front = (Q->front + 1) % MAXSIZE;
return 1;
}
}
void PrintTriangle(int n) // 输出杨辉三角
{
Queue Q;
InitQueue(&Q);
EnQueue(&Q, 1); // 第一行元素入队
for (int i = 1; i <= n; i++) { // 控制行数
int pre = 0; // 记录上一行的元素值
for (int j = 1; j <= i; j++) { // 控制每行的元素个数
int x;
DeQueue(&Q, &x);
printf("%d ", x);
if (pre != 0) { // 计算当前元素值并入队
EnQueue(&Q, pre + x);
}
pre = x;
}
EnQueue(&Q, 1); // 每行最后一个元素为1,入队
printf("\n");
}
}
int main()
{
int n;
printf("请输入杨辉三角的行数:");
scanf("%d", &n);
PrintTriangle(n);
return 0;
}
```
阅读全文