软件开发中常用数据结构介绍:C语言队列

这篇具有很好参考价值的文章主要介绍了软件开发中常用数据结构介绍:C语言队列。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

工作之余来写写C语言相关知识,以免忘记。今天就来聊聊C语言实现循环队列,我是分享人M哥,目前从事车载控制器的软件开发及测试工作。

学习过程中如有任何疑问,可底下评论!

如果觉得文章内容在工作学习中有帮助到你,麻烦点赞收藏评论+关注走一波!感谢各位的支持!

软件开发中常用数据结构介绍:C语言队列,嵌入式C语言,c语言,数据结构

今天给大家带来循环队列的实现代码,至于队列的实现原理,网络上有许多详细的解释,我这里就不在赘述,直接上代码;

1.queueCycle.h队列头文件

#ifndef QUEUECYCLE_H_
#define QUEUECYCLE_H_

#define FALSE (0)
#define TRUE (1)

/*定义循环队列结构*/
typedef struct Queue {
	int* data; /*队列元素*/
	int size; /*队列大小*/
	int front; /*队首*/
	int rear; /*队尾*/
}Queue_t;

void queue_init(Queue_t* pQueue, int n);
int queue_is_empty(Queue_t* pQueue);
int queue_is_full(Queue_t* pQueue);
int queue_push(Queue_t* pQueue, int* data);
int queue_pop(Queue_t* pQueue, int* data);
int queue_get_front(Queue_t* pQueue, int* value);
void printfQueue(Queue_t* pQueue);

#endif // !1

2.queueCycle.c队列函数实现

#include <stdio.h>
#include <stdlib.h>

#include "queueCycle.h"


void queue_init(Queue_t *pQueue, int n) {
	pQueue->data = (int*)malloc((n+1) * sizeof(int));
	pQueue->size = n + 1;
	pQueue->front = 0;
	pQueue->rear = 0;
}

int queue_is_empty(Queue_t *pQueue) {
	return (pQueue->front == pQueue->rear); /*判断队列是否为空*/
}

int queue_is_full(Queue_t *pQueue) {
	return (pQueue->front == (pQueue->rear + 1)%pQueue->size); /*判断队列是否满*/
}

int queue_push(Queue_t *pQueue, int *data) {
	if (queue_is_full(pQueue))
	{
		printf("队列已满\n");
		return FALSE;
	}
	pQueue->data[pQueue->rear] = *data; /*入队列*/
	pQueue->rear = (pQueue->rear + 1) % (pQueue->size);
	return TRUE;
}

int queue_pop(Queue_t* pQueue, int* data) {
	if (queue_is_empty(pQueue))
	{
		printf("队列为空\n");
		return FALSE;
	}
	*data = pQueue->data[pQueue->front];
	pQueue->front = (pQueue->front + 1) % (pQueue->size);
	return TRUE;
}

int queue_get_front(Queue_t *pQueue, int *value) {
	if (queue_is_empty(pQueue))
	{
		return FALSE;
	}
	*value = pQueue->data[pQueue->front];
	return TRUE;
}

void printfQueue(Queue_t *pQueue) {
	if (queue_is_empty(pQueue))
	{
		printf("队列为空\n");
		return FALSE;
	}
	while (pQueue->front != pQueue->rear) {
		printf("%d ", pQueue->data[pQueue->front]);
		pQueue->front = (pQueue->front + 1) % (pQueue->size);
	}
}

3.main.c主函数队列验证

#include <stdio.h>
#include <stdlib.h>

#include "queueCycle.h"

int main()
{
	int i,n = 5;
	int data = 0;
	Queue_t queue;

	queue_init(&queue, n);
	for (i = 1;i < 6;i++)
	{
		queue_push(&queue, &i);
	}

	for (i = 1;i < 3;i++)
	{
		queue_pop(&queue, &i);
	}
	queue_get_front(&queue, &data);
	printf("%d\n", data);
	/*for (i = 0;i < 5;i++)
	{
		queue_pop(&queue, &i);
		printf("%d", i);
	}*/
	printfQueue(&queue);

}

感谢对本期内容不遗余力的学习,下期内容即将奉上,欢迎下次光临!

软件开发中常用数据结构介绍:C语言队列,嵌入式C语言,c语言,数据结构文章来源地址https://www.toymoban.com/news/detail-669737.html

到了这里,关于软件开发中常用数据结构介绍:C语言队列的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 汽车零部件软件开发常用搜索算法

    一、线性搜索(Linear Search) 线性搜索是最基础的查找算法,适用于对未排序或无特定结构的数据集合进行搜索。在C语言中实现时,线性搜索通过遍历数组或链表中的每一个元素,并与目标值进行比较,直至找到匹配项或者遍历完所有元素。其时间复杂度为O(n),其中n代表数

    2024年02月19日
    浏览(31)
  • 汽车零部件软件开发中常用滤波算法

    滑动窗口滤波是数字信号处理中的基本技术,通过在数据序列上移动一个固定大小的窗口并计算窗口内数据点的统计量(如均值或中值)来平滑信号。本文将探讨滑动窗口均值滤波和中值滤波的基本实现、工作原理及其局限性,并引入卡尔曼滤波作为一种更高级别的滤波方法

    2024年02月21日
    浏览(37)
  • 【鸿蒙软件开发】ArkTS常用组件之Button

    Button是按钮组件,通常用于响应用户的点击操作,其类型包括胶囊按钮、圆形按钮、普通按钮。Button当做为容器使用时可以通过添加子组件实现包含文字、图片等元素的按钮。具体用法请参考Button。 Button通过调用接口来创建,接口调用有以下两种形式: 创建不包含子组件的

    2024年02月02日
    浏览(39)
  • 硬件开发软件介绍

      本文主要简单介绍一下硬件开发过程中所用到的软件,并简要说明一下优缺点   立创EDA集成了原理图设计、PCB设计的功能,器件库、封装库丰富(而且共享),同时器件可以直接在立创商城采购,pcb制板和芯片贴片都可以在嘉立创进行生产加工,总之,立创集团提供了

    2024年02月08日
    浏览(33)
  • 单片机常用的开发软件有哪些?

    开发工具有很多,踩坑无数总结: 用得顺手、带仿真调试功能 的最重要。 特别是带仿真调试功能,用熟了,能让你找Bug效率直接起飞。 下面给大家盘点一些比较常用的单片机开发工具: 1.Keil μVision   这款开发工具相信是所有做单片机开发必用的了。 Keil是一种基于Windows系

    2024年02月09日
    浏览(33)
  • windows 下 搭建 ElasticSearch 环境,前端开发常用软件

    打开浏览器测试: http://localhost:9200 彻底关闭ES 第三步:将ElasticSearch安装为Windows服务 进入bin目录下执行命令: elasticsearch-service.bat install 在windows服务中查看 elasticsearch-service.bat后面还可以执行这些命令 install: 安装Elasticsearch服务 remove: 删除已安装的Elasticsearch服务(如果启动则

    2024年04月13日
    浏览(50)
  • web组态软件开发详细流程介绍

    组态软件是一种用于创建、配置和管理各种工业控制系统的应用程序。它通过用户友好的图形界面和先进的功能,使工程师能够实时监控和控制复杂的工业过程。 一、组态软件的基本概念 1.1组态软件的作用 组态软件在工业控制系统中起到关键的作用。 它可以实时获取和展示

    2024年02月20日
    浏览(38)
  • 软件测试/测试开发丨Selenium的常用元素定位方法

    Selenium是一个流行的开源框架,目前在 Web 自动化方面运用最为广泛的一个开源、无浏览器要求、可支持多语言、设计测试用例非常灵活的自动化测试框架。支持多种编程语言,并且能够模拟用户操作,例如点击、输入、提交等等。 在Selenium中,元素定位是一个非常重要的步骤

    2024年01月16日
    浏览(56)
  • 软件测试开发工程师常用的测试工具详解

    1. 操作系统: Linux: vmware: 用于虚拟化环境,创建和管理虚拟机。 xshell、xftp、ssh: 提供对Linux服务器的远程访问和文件传输。 2. 数据库: MySQL: SQLyog、Navicat: 前端连接工具,简化MySQL数据库的管理和操作。 Oracle: PLSQL Developer、Navicat: 前端连接工具,用于Oracle数据库的开发和

    2024年02月02日
    浏览(63)
  • 软件测试/测试开发 | app测试中常用的Android模拟器

    公众号搜索:TestingStudio 霍格沃兹的干货都很硬核 测试 Android app 的时候,Android 模拟器是经常会用到的工具。模拟器可以轻松的模拟不同的品牌、分辨率和 Android 系统版本。可以让兼容测试做起来更容易。 下面就来看看目前常用的 Android 模拟器都有哪些。 Emualor 是 Android St

    2024年02月15日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包