C语言,在循环队列中,以front和length分别表示循环队列中的队头位置和队列中所含元素的个数。试完成循环队列判断队空、判断队满入队和出队函数、获取队头元素及输出的操作,在主函数中调用以上函数,完成杨辉三角的输出。
时间: 2023-05-31 14:01:30 浏览: 51
以下是一个例子:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100 // 循环队列最大容量
typedef struct {
int data[MAX_SIZE]; // 存放元素的数组
int front; // 队头位置
int length; // 元素个数
} Queue;
void init(Queue *q) {
q->front = 0;
q->length = 0;
}
int is_empty(Queue *q) {
return q->length == 0;
}
int is_full(Queue *q) {
return q->length == MAX_SIZE;
}
void enqueue(Queue *q, int val) {
if (is_full(q)) {
printf("Queue is full\n");
return;
}
q->data[(q->front + q->length) % MAX_SIZE] = val;
q->length++;
}
int dequeue(Queue *q) {
if (is_empty(q)) {
printf("Queue is empty\n");
return -1;
}
int val = q->data[q->front];
q->front = (q->front + 1) % MAX_SIZE;
q->length--;
return val;
}
int peek(Queue *q) {
if (is_empty(q)) {
printf("Queue is empty\n");
return -1;
}
return q->data[q->front];
}
void print(Queue *q) {
printf("Queue: ");
for (int i = 0; i < q->length; i++) {
printf("%d ", q->data[(q->front + i) % MAX_SIZE]);
}
printf("\n");
}
void yanghui_triangle(int rows) {
Queue q;
init(&q);
enqueue(&q, 1);
for (int i = 0; i < rows; i++) {
int prev = 0;
for (int j = 0; j <= i; j++) {
int curr = dequeue(&q);
printf("%d ", curr);
enqueue(&q, curr + prev);
prev = curr;
}
printf("\n");
}
}
int main() {
int rows = 5;
yanghui_triangle(rows);
return 0;
}
```
输出:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```