含有头文件实现文件的队列c语言输出斐波那契数列
时间: 2023-10-27 22:24:09 浏览: 58
好的,以下是实现一个队列的 C 语言代码,其中包含头文件和实现文件:
队列头文件 queue.h:
```c
#ifndef QUEUE_H
#define QUEUE_H
typedef struct queue {
int *data;
int front, rear;
int size;
} Queue;
Queue* createQueue(int size);
int isFull(Queue *queue);
int isEmpty(Queue *queue);
void enqueue(Queue *queue, int item);
int dequeue(Queue *queue);
int front(Queue *queue);
int rear(Queue *queue);
#endif
```
队列实现文件 queue.c:
```c
#include "queue.h"
#include <stdlib.h>
Queue* createQueue(int size) {
Queue *queue = (Queue*) malloc(sizeof(Queue));
queue->data = (int*) malloc(sizeof(int) * size);
queue->front = queue->rear = -1;
queue->size = size;
return queue;
}
int isFull(Queue *queue) {
return (queue->rear + 1) % queue->size == queue->front;
}
int isEmpty(Queue *queue) {
return queue->front == -1;
}
void enqueue(Queue *queue, int item) {
if (isFull(queue)) {
return;
}
if (queue->front == -1) {
queue->front = 0;
}
queue->rear = (queue->rear + 1) % queue->size;
queue->data[queue->rear] = item;
}
int dequeue(Queue *queue) {
if (isEmpty(queue)) {
return -1;
}
int item = queue->data[queue->front];
if (queue->front == queue->rear) {
queue->front = queue->rear = -1;
} else {
queue->front = (queue->front + 1) % queue->size;
}
return item;
}
int front(Queue *queue) {
if (isEmpty(queue)) {
return -1;
}
return queue->data[queue->front];
}
int rear(Queue *queue) {
if (isEmpty(queue)) {
return -1;
}
return queue->data[queue->rear];
}
```
现在我们可以使用上述队列实现来输出斐波那契数列:
```c
#include <stdio.h>
#include "queue.h"
void fibonacci(int n) {
Queue *queue = createQueue(n);
enqueue(queue, 0);
enqueue(queue, 1);
int i;
for (i = 0; i < n; i++) {
int a = dequeue(queue);
int b = front(queue);
int c = a + b;
printf("%d ", a);
enqueue(queue, c);
}
}
int main() {
int n = 10;
fibonacci(n);
return 0;
}
```
输出:
```
0 1 1 2 3 5 8 13 21 34
```
以上代码能够使用队列实现斐波那契数列的输出。
阅读全文