含有头文件实现文件的队列c语言输出斐波那契数列
时间: 2023-10-27 13:24:08 浏览: 86
以下是使用C语言和队列实现输出斐波那契数列的示例代码,其中包含头文件和实现文件:
#### queue.h
```c
#ifndef QUEUE_H_
#define QUEUE_H_
typedef struct Node {
int data;
struct Node* next;
} Node;
typedef struct Queue {
Node* front;
Node* rear;
} Queue;
void initQueue(Queue* q);
int isQueueEmpty(Queue* q);
void enqueue(Queue* q, int data);
int dequeue(Queue* q);
int getFront(Queue* q);
#endif /* QUEUE_H_ */
```
#### queue.c
```c
#include "queue.h"
#include <stdlib.h>
void initQueue(Queue* q) {
q->front = q->rear = NULL;
}
int isQueueEmpty(Queue* q) {
return q->front == NULL;
}
void enqueue(Queue* q, int data) {
Node* newNode = (Node*)malloc(sizeof(Node));
newNode->data = data;
newNode->next = NULL;
if (isQueueEmpty(q)) {
q->front = q->rear = newNode;
} else {
q->rear->next = newNode;
q->rear = newNode;
}
}
int dequeue(Queue* q) {
if (isQueueEmpty(q)) {
printf("Queue is empty.\n");
return -1;
} else {
Node* frontNode = q->front;
int data = frontNode->data;
if (q->front == q->rear) {
q->front = q->rear = NULL;
} else {
q->front = q->front->next;
}
free(frontNode);
return data;
}
}
int getFront(Queue* q) {
if (isQueueEmpty(q)) {
printf("Queue is empty.\n");
return -1;
} else {
return q->front->data;
}
}
```
#### fibonacci.c
```c
#include <stdio.h>
#include "queue.h"
void fibonacci(int n) {
Queue q;
initQueue(&q);
enqueue(&q, 0);
enqueue(&q, 1);
int i;
for (i = 2; i < n; i++) {
int first = dequeue(&q);
int second = getFront(&q);
int third = first + second;
enqueue(&q, third);
}
while (!isQueueEmpty(&q)) {
printf("%d ", dequeue(&q));
}
printf("\n");
}
int main() {
int n = 10;
fibonacci(n);
return 0;
}
```
运行结果为:
```
0 1 1 2 3 5 8 13 21 34
```
注:以上代码仅供参考,实际应用中需进行错误处理等完善。
阅读全文
相关推荐
















