首页 > 其他分享 >c语言写的环形队列

c语言写的环形队列

时间:2024-09-15 19:50:24浏览次数:11  
标签:count 语言 队列 元素 环形 queue int printf

        以下是一个简单的环形队列的实现示例,包括初始化、入队、出队、查询当前元素个数、队列长度和队列元素可视化。

        这里使用了静态数组来实现队列的存储,适合于固定大小的队列。

#include <stdio.h>
#define MAX_QUEUE_SIZE 10  // 定义队列的最大容量
typedef struct {    
int data[MAX_QUEUE_SIZE];  // 队列的数据数组    
int front;  // 队头指针,指向队首元素的位置    
int rear;   // 队尾指针,指向队尾元素的下一个位置    
int count;  // 队列当前元素个数
}CircularQueue;
// 初始化队列
void initQueue(CircularQueue *queue) {    
queue->front = 0;    
queue->rear = 0;    
queue->count = 0;
}
// 入队操作
void enqueue(CircularQueue *queue, int value) {    
if (queue->count >= MAX_QUEUE_SIZE) {        
printf("队列已满,无法入队!\n");        
return;    
}    
queue->data[queue->rear] = value;    
queue->rear = (queue->rear + 1) % MAX_QUEUE_SIZE;  // 更新rear指针,注意取模操作    
queue->count++;
}
// 出队操作
int dequeue(CircularQueue *queue) {    
if (queue->count <= 0) {        
printf("队列为空,无法出队!\n");        
return -1;  // 返回一个特殊值表示出错    
}    
int value = queue->data[queue->front];    
queue->front = (queue->front + 1) % MAX_QUEUE_SIZE;  // 更新front指针,注意取模操作    
queue->count--;    
return value;
}
// 查询当前队列元素个数
int queueCount(CircularQueue *queue) {    
return queue->count;
}
// 查询队列长度(最大容量)
int queueLength() {    
return MAX_QUEUE_SIZE;
}
// 打印队列元素(可视化)
void printQueue(CircularQueue *queue) {    
printf("队列中的元素为:");    
int i = queue->front;    
int cnt = 0;    
while (cnt < queue->count) {        
printf("%d ", queue->data[i]);        
i = (i + 1) % MAX_QUEUE_SIZE;        
cnt++;    
}    
printf("\n");
}
// 示例程序int main() {    
CircularQueue queue;    
initQueue(&queue);
    enqueue(&queue, 1);    
enqueue(&queue, 2);    
enqueue(&queue, 3);    
printQueue(&queue);  // 输出:队列中的元素为:1 2 3
    dequeue(&queue);    
printQueue(&queue);  // 输出:队列中的元素为:2 3
    printf("当前队列元素个数:%d\n", queueCount(&queue));  // 输出:当前队列元素个数:2    
printf("队列长度:%d\n", queueLength());  // 输出:队列长度:10
    return 0;
}

==============================================

可以正常运行:

队列中的元素为:1 2 3 队列中的元素为:2 3 当前队列元素个数:2队列长度:10

标签:count,语言,队列,元素,环形,queue,int,printf
From: https://blog.csdn.net/qq_42837317/article/details/142287640

相关文章

  • 带你深入了解C语言指针(三)
    目录前言一、字符指针变量字符数组与常量字符串二、数组指针变量1.数组指针变量是什么2.数组指针变量怎么初始化3.数组指针怎么利用?三、二维数组传参四、函数指针变量1.函数指针变量的创建2.函数指针变量的使用3.typedef4.define和typedef的区别五、函数指针数......
  • 语言 题解
    语言题解本题其实没有什么好说的,主要是提供一种强大的,神秘的,诡异的,跑得飞快的,逆天的,唐诗的双\(\log\)做法首先考虑将答案分类,分成跨过这个语言的lca的和没跨过的对于没跨过的,可以发现就是对于每个点,求能扩展到的深度最低的节点,这个直接暴力做就是\(O(n)\)的,所以说我们直......
  • 条件编译 - 代码裁剪的工具 --进阶C语言
    目录条件编译-代码裁剪的工具为何要有条件编译条件编译都在那些地方用?见一见条件编译的代码宏是否被定义vs宏是否为真or假编译器也能够自动帮你加上宏GCCVS2023-VS2019#ifdef/#ifndef#if注意事项让#if和#ifdef/#ifndef完全一样条件编译也支持嵌套一个使用#ifdefined能起到很......
  • 【Go语言】quic-go实现0-RTT传输
    核心思路:在客户端的tls文件中缓存第一次连接留下来的会话票据,在第二次连接中就可以实现0-RTT。为此,重要的是实现tls.Config.ClientSessionCache这个接口的具体结构体文件目录tlscfg.go代码:这个模块主要用于实现客户端和服务器的tls配置packagetlscfgimport( "crypto......
  • Lua云函数如何设置签名和时间戳校验(按键精灵、懒人精灵等任何语言均可调用)
    Lua云函数工具如何设置签名校验以及时间戳验证前景回顾→Lua云函数的对接和使用http://t.csdnimg.cn/pcIjS添加过[签名校验][时间戳验证][数据加密]任意一项,项目颜色会变成橙色点击[管理项目加密]按钮后会进入下方界面,这次的教程主要讲解如何进行[签名校验......
  • Lua云函数(按键精灵、懒人精灵等任何精灵或语言均可调用)
    Lua云函数安装视频教程>本教程不对安装进行讲解,仅教学如何创建以及对接!>[哔哩哔哩]https://b23.tv/Wam52Ty创建第一个Lua云函数项目一、点击[添加新的项目]按钮二、输入[项目名称]推荐使用英文三、进入到了[创建项目]界面,将Lua代码填入进去该......
  • 深入理解 C 语言中的结构体 —— 原理与实践
    引言在C语言中,结构体是一种非常强大的数据类型,用于组织不同类型的数据成员。通过结构体,我们可以创建复杂的数据结构,用于表示现实生活中的对象。本文将详细介绍C语言中结构体的基本概念、语法、使用方法以及一些高级主题,包括底层原理和具体应用。结构体基础知识定义......
  • Day4||24.两两交换链表中的节点|19.删除链表的倒数第n个结点|面试题:链表相交|142.环形
    24.两两交换链表中的节点题目:24.两两交换链表中的节点-力扣(LeetCode)给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。你必须在不修改节点内部的值的情况下完成本题(即,只能进行节点交换)。图解思路首先,虚拟头结点挺方便链表进行增删改操作的。本题操作用到三......
  • 循环语句与条件语句的细节与思想 --进阶C语言
    目录if-else组合if的执行顺序操作符的执行顺序测试方法C语言的布尔类型switchcase组合(补充)屏蔽警告的方法在case中执行多条语句,建议case后都带上花括号.多个case执行同样语句do、while、for循环的基本结构continue跳转的位置循环设计的思想推荐推荐使用for的前闭后开写法null......
  • 鹏哥C语言36-37---循环/分支语句练习(折半查找算法)
    #define_CRT_SECURE_NO_WARNINGS//----------------------------------------------------------------------------------------------------3.4分支,循环练习//用代码解决问题=先想办法(编程思维)+再写代码(按照语法形式)//--------------------------------------------......