用C语言通过顺序栈底的数据结构来编写一个任意行数的杨辉三角的代码
时间: 2023-06-01 07:04:11 浏览: 44
```c
#include <stdio.h>
#define MAX_SIZE 100
typedef struct {
int data[MAX_SIZE];
int top;
} Stack;
void initStack(Stack *s) {
s->top = -1;
}
void push(Stack *s, int x) {
if (s->top == MAX_SIZE - 1) {
printf("Stack Overflow\n");
return;
}
s->data[++s->top] = x;
}
int pop(Stack *s) {
if (s->top == -1) {
printf("Stack Underflow\n");
return -1;
}
return s->data[s->top--];
}
int peek(Stack *s) {
if (s->top == -1) {
printf("Stack Underflow\n");
return -1;
}
return s->data[s->top];
}
int empty(Stack *s) {
return s->top == -1;
}
int binomial(int n, int k) {
if (k == 0 || k == n)
return 1;
return binomial(n - 1, k - 1) + binomial(n - 1, k);
}
void printRow(int n) {
Stack s;
initStack(&s);
for (int k = 0; k <= n; k++) {
int x = binomial(n, k);
push(&s, x);
}
while (!empty(&s)) {
printf("%d ", pop(&s));
}
printf("\n");
}
int main() {
int numRows;
printf("Enter the number of rows: ");
scanf("%d", &numRows);
for (int i = 0; i < numRows; i++) {
printRow(i);
}
return 0;
}
```