[数据结构]环形队列

实现环形队列,实现入队出队操作:

cpp 复制代码
#include <stdio.h>

#define MAXSIZE 10

int enterqueue(int* array, int);

void printQueue();


int front = 0, rear = 0;
int main(void) {
    int arr[10] = { -1,-1,-1,-1,-1,-1,-1,-1,-1,-1 };

    printQueue(&arr);
    enterqueue(&arr, 10);
    printQueue(&arr);
    enterqueue(&arr, 20);
    printQueue(&arr);
    enterqueue(&arr, 30);
    printQueue(&arr);
    enterqueue(&arr, 40);
    printQueue(&arr);
    enterqueue(&arr, 50);
    printQueue(&arr);
    enterqueue(&arr, 60);
    printQueue(&arr);
    enterqueue(&arr, 70);
    printQueue(&arr);
    enterqueue(&arr, 80);
    printQueue(&arr);
    enterqueue(&arr, 90);
    printQueue(&arr);


    exitQueue(&arr);
    printQueue(&arr);
    exitQueue(&arr);
    printQueue(&arr);
    exitQueue(&arr);
    printQueue(&arr);
    exitQueue(&arr);
    printQueue(&arr);

    enterqueue(&arr, 100);
    printQueue(&arr);
    enterqueue(&arr, 110);
    printQueue(&arr);

    printf("Hello World\n");
    return 0;
}

/*入队函数*/
int enterqueue(int* array, int value) {
    /*判断是否队满*/
    if ((rear + 1) % MAXSIZE == front) {
        printf("队满\r\n");
        return 0;
    }

    rear = (rear + 1) % MAXSIZE;//rear指向下一位
    array[rear] = value;

    return 0;
}

/*出队函数*/
int exitQueue(int* array) {
    if (rear == front) {
        printf("队空\r\n");
        return 0;
    }
    int temp = 0;
    front = (front + 1) % MAXSIZE;
    temp = array[front];
    array[front] = -1;

    return temp;
}


void printQueue(int* array) {

    for (int k = 0; k < 10; k++) {

        printf("arr[%d]=%d\r\n", k, *(array+k));
    }
    printf("\r\n");

}

进一步使用stm32进行缓冲数据实验

相关推荐
南客先生3 分钟前
5G融合消息PaaS项目深度解析 - Java架构师面试实战
java·微服务·高并发·paas·分布式系统·缓存策略·5g融合消息
幽络源小助理5 分钟前
SpringBoot物资管理系统 | JavaWeb项目设计与实现
java·springboot·javaweb
Small踢倒coffee_氕氘氚11 分钟前
是否应该禁止危险运动论文
经验分享·笔记·算法·灌灌灌灌
掘金詹姆斯13 分钟前
LangChain4j—人工智能服务 AIService(三)
java·人工智能
掘金詹姆斯13 分钟前
LangChain4j—聊天记忆 Chat memory(四)
java·人工智能
Chase_______14 分钟前
Java后端开发——分层解耦详解
java·开发语言·spring·web
喝可乐的布偶猫15 分钟前
Java----super 关键字
java·开发语言
篱笆院的狗22 分钟前
Java 中 ConcurrentHashMap 1.7 和 1.8 之间有哪些区别?
java·开发语言
与秋逐鹿¥44 分钟前
在Mybatis中为什么要同时指定扫描mapper接口和 mapper.xml 文件,理论单独扫描 xml 文件就可以啊
java·tomcat·mybatis
异常君1 小时前
Netty Reactor 线程模型详解:构建高性能网络应用的关键
java·后端·netty