队列与斐波那契

举报
吃瓜面包君 发表于 2023/08/08 17:10:09 2023/08/08
【摘要】 在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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。