C语言堆栈实现斐波那契数列的全代码
时间: 2023-08-12 15:13:46 浏览: 124
下面是使用C语言实现斐波那契数列的堆栈实现的代码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
int stack[MAX_SIZE];
int top = -1;
// 入栈
void push(int item) {
if (top >= MAX_SIZE - 1) {
printf("Stack Overflow.\n");
return;
}
stack[++top] = item;
}
// 出栈
int pop() {
if (top < 0) {
printf("Stack Underflow.\n");
exit(1);
}
return stack[top--];
}
// 斐波那契数列
int fibonacci(int n) {
if (n <= 1) {
return n;
}
push(1);
push(0);
int i, a, b;
for (i = 2; i <= n; i++) {
a = pop();
b = pop();
push(a + b);
push(a);
}
return stack[0];
}
int main() {
int n = 10;
printf("斐波那契数列的前%d项为:\n", n);
for (int i = 0; i < n; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}
```
在这段代码中,我们先定义了一个大小为100的数组作为堆栈,然后定义了三个函数:`push()`、`pop()`、`fibonacci()`。
`push()`函数用于将元素入栈,如果栈已满,就会提示“Stack Overflow”。`pop()`函数用于将元素出栈,如果栈已空,就会提示“Stack Underflow”。
`fibonacci()`函数就是使用堆栈实现斐波那契数列的算法。首先判断n的值是否小于等于1,如果是,就返回n。否则,将1和0入栈,然后进行循环,每次从栈中取出两个元素a和b,计算它们的和并将结果入栈,再将a入栈。最后,返回栈顶元素即可。
在主函数中,我们调用`fibonacci()`函数来计算斐波那契数列的前10项,并输出结果。
阅读全文