队列与斐波那契
【摘要】 在C语言中,队列(Queue)是一种常用的数据结构,用来存储元素,并遵循先进先出(First In First Out,FIFO)的原则。队列通常包含两个基本操作:入队(enqueue)和出队(dequeue)。下面是一个简单的使用数组实现的队列的C语言例子:#include <stdio.h>#include <stdlib.h>#define MAX_SIZE 1...
在C语言中,队列(Queue)是一种常用的数据结构,用来存储元素,并遵循先进先出(First In First Out,FIFO)的原则。队列通常包含两个基本操作:入队(enqueue)和出队(dequeue)。
下面是一个简单的使用数组实现的队列的C语言例子:
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 100
typedef struct Queue {
int data[MAX_SIZE];
int front;
int rear;
} Queue;
// 初始化队列
void initialize(Queue* queue) {
queue->front = -1;
queue->rear = -1;
}
// 判断队列是否为空
int isEmpty(Queue* queue) {
return (queue->front == -1 && queue->rear == -1);
}
// 判断队列是否已满
int isFull(Queue* queue) {
return (queue->rear == MAX_SIZE - 1);
}
// 入队
void enqueue(Queue* queue, int item) {
if (isFull(queue)) {
printf("队列已满,无法入队!\n");
return;
}
if (isEmpty(queue)) {
queue->front = 0;
queue->rear = 0;
} else {
queue->rear++;
}
queue->data[queue->rear] = item;
}
// 出队
int dequeue(Queue* queue) {
if (isEmpty(queue)) {
printf("队列为空,无法出队!\n");
return -1;
}
int item = queue->data[queue->front];
if (queue->front == queue->rear) {
queue->front = -1;
queue->rear = -1;
} else {
queue->front++;
}
return item;
}
int main() {
// 创建队列
Queue queue;
initialize(&queue);
// 入队
enqueue(&queue, 10);
enqueue(&queue, 20);
enqueue(&queue, 30);
// 出队
printf("出队元素:%d\n", dequeue(&queue));
printf("出队元素:%d\n", dequeue(&queue));
printf("出队元素:%d\n", dequeue(&queue));
return 0;
}
在该例子中,我们定义了一个队列结构体,并使用initialize函数初始化队列。enqueue函数用来将元素入队,dequeue函数用来将元素出队。使用isEmpty和isFull函数来判断队列是否为空或已满。
在main函数中,我们创建了一个队列,并依次将元素10、20、30入队,并用dequeue函数依次将元素出队,并输出出队元素。
斐波那契数列(Fibonacci)是一个经典的数学问题,它的每个数字是前两个数字之和。以下是使用递归方法计算斐波那契数列的C语言例子:
#include <stdio.h>
int fibonacci(int n) {
if (n <= 1)
return n;
else
return (fibonacci(n - 1) + fibonacci(n - 2));
}
int main() {
int n = 10; // 要计算的斐波那契数列的项数
printf("斐波那契数列前 %d 项:\n", n);
for (int i = 0; i < n; i++) {
printf("%d ", fibonacci(i));
}
printf("\n");
return 0;
}
在该例子中,我们定义了一个递归函数fibonacci来计算斐波那契数列中的第 n 项。通过main函数循环调用fibonacci函数,计算并输出斐波那契数列的前 n 项。
例如,当 n 等于 10 时,结果为:0 1 1 2 3 5 8 13 21 34。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)