c语言用队列输出斐波那锲数列
时间: 2023-09-13 09:12:42 浏览: 91
下面是用 C 语言实现斐波那契数列的队列版本代码:
```c
#include <stdio.h>
#define MAXSIZE 100
typedef struct {
int data[MAXSIZE];
int front, rear;
} Queue;
void initQueue(Queue *q) {
q->front = q->rear = 0;
}
int isEmpty(Queue *q) {
return q->front == q->rear;
}
int isFull(Queue *q) {
return (q->rear + 1) % MAXSIZE == q->front;
}
void enQueue(Queue *q, int x) {
if (isFull(q)) {
printf("Queue is full!\n");
return;
}
q->data[q->rear] = x;
q->rear = (q->rear + 1) % MAXSIZE;
}
int deQueue(Queue *q) {
if (isEmpty(q)) {
printf("Queue is empty!\n");
return -1;
}
int x = q->data[q->front];
q->front = (q->front + 1) % MAXSIZE;
return x;
}
int main() {
Queue q;
initQueue(&q);
int a = 0, b = 1, n, i;
printf("Enter the number of terms: ");
scanf("%d", &n);
printf("Fibonacci Series: ");
enQueue(&q, a);
enQueue(&q, b);
for (i = 1; i <= n; i++) {
a = deQueue(&q);
b = deQueue(&q);
int c = a + b;
printf("%d ", a);
enQueue(&q, b);
enQueue(&q, c);
}
printf("\n");
return 0;
}
```
在上面的代码中,使用了一个队列来存储斐波那契数列中的每个元素。首先将前两项 0 和 1 分别入队,然后在循环中取出队列中的前两项,计算它们的和,将第二项和和计算结果入队,然后输出当前的第一项。循环结束后即可输出完整的斐波那契数列。
阅读全文