C语言队列

c语言实现队列 阅读详情

 

目录

队列有关概念

队列的创建

队列的初始化

队列的插入

队列的删除

取队列的头

取队列的尾

 队列元素的数量

判断队列是否为空

销毁队列


队列有关概念

首先队列最大的特点是“先进先出”,只能在一端插入,另一端删除,插入的一端是队尾,删除的一端是队头。

队列的创建

typedef int QDataType;

typedef struct QueueNode
{
	struct QueueNode* next;
	QDataType data;
}QNode;
typedef struct Queue
{
	QNode* head;
	QNode* tail;
}Queue;

这里要创建两个结构体,因为这里要记录一下他的头和尾,这样可以方便进行插入和删除。

队列的初始化

void QueueInit(Queue* pq)
{
    assert(pq);
    pq->head = pq->tail = NULL;
}

队列的插入

void QueuePush(Queue* pq, QDataType x)
{
    assert(pq);
    QNode* newnode = (QNode*)malloc(sizeof(QNode));
    if (newnode == NULL)
    {
        printf("malloc fail\n");
        exit(-1);
    }
    newnode->data = x;
    newnode->next = NULL;
    if (pq->tail == NULL)
    {
        pq->tail = pq->head = newnode;
    }
    else
    {
        pq->tail->next = newnode;
        pq->tail = newnode;
    }
}

队列的删除

void QueuePoq(Queue* pq)
{
    assert(pq);
    assert(!QueueEmpty(pq));
    if (pq->head->next == NULL)
    {
        free(pq->head);
        pq->head = pq->tail = NULL;
    }
    else
    {
        QNode* cur = pq->head->next;
        free(pq->head);
        pq->head = cur;
    }
}

取队列的头

QDataType QueueFront(Queue* pq)
{
    assert(pq);
    assert(!QueueEmpty(pq));
    return pq->head->data;
}

取队列的尾

QDataType QueueBack(Queue* pq)
{
    assert(pq);
    assert(!QueueEmpty(pq));
    return pq->tail->data;
}

 队列元素的数量

int QueueSize(Queue* pq)
{
    assert(pq);
    int size = 0;
    QNode* cur = pq->head;
    while (cur)
    {
        size++;
        cur = cur->next;
    }
    return size;
}

判断队列是否为空

bool QueueEmpty(Queue* pq)
{
    assert(pq);
    return pq->head == NULL;
}

销毁队列

void QueueDestory(Queue* pq)
{
    assert(pq);
    QNode* cur = pq->head;
    while (cur)
    {
        QNode* aq = cur->next;
        free(cur);
        cur = aq;
    }
    pq->head = pq->tail = NULL;
}

数据结构中队列的操作方式,一目了然 队列是一个线性的数据结构,并且这个数据结构只允许在一端进行插入,另一端进行删除,禁止直接访问除这两端以外的一切数据,且队列是一个先进先出的数据结构。如上图,队列就像一个两端相通的水管,只允许一端插入,另一端取出,取出的球就不在水管里面了,而先放入管中的球就会先从管中拿出。请牢记这句话:队列是一个先进先出的数据结构。 阅读详情

相关推荐

队列的添加与删除操作

次此程序是关于队列的操作,此操作主要是队列的添加与删除。要在c++环境下运行!希望大家在编程方面多多交流,我的QQ:362704998

数据结构:队列

队列代码实现

qq_59325159的博客 1212

队列的初始化和插入和删除

队列的初始化和插入和删除

数据结构之队列

队列:只允许在一端进行数据插入操作,在另一端进行删除操作的特殊线性表. 队列具有先进先出的性质,和栈的先进后出相反. 其中,进行插入操作的一端称为队尾,进行删除操作的一端称为队头.

weixin_47257473的博客 2557

手把手教你编写I2C读写EEPROM代码(驱动层实现)

从底层寄存器配置到时序控制,详解如何编写可移植的I2C读写EEPROM代码,覆盖起始信号、地址帧、数据收发及ACK应答等关键环节,确保在STM32、ESP32等主流平台稳定运行,真正落地i2c读写eeprom代码需求。

weixin_35756130的博客 507

【ENVI初学】查看影像空间分辨率及重采样

例如,如果线段长度为900米,对应的像素数量为30个,那么影像的空间分辨率为30米。通过计算长度与像素数量的比值,即可得到影像的空间分辨率。,在弹出的对话框中,输入重采样后输出文件的xy分辨率大小。在测量结果窗口中,可以看到该线段的长度以及角度。在影像上点击并拖动鼠标,绘制一条直线段。工具,选择要重采样的影像后点击ok。,避免了插值过程中光谱信息的改变。:最近邻插值法通过选择原始影像中。在ENVI中打开影像后右键选择。指示了每个像素的地理跨度(聚合为一个新像素,通常通过。方法一:查看影像的元数据。

weixin_41619112的博客 5571

【数据结构之队列系列】队列详解

前面我们学习了一种数据结构:栈,栈是一种只允许在一端尽进行插入删除的数据结构,而今天我们将学习另一种数据结构:队列,队列是一种支持在一端进行插入,在另一端进行删除的数据结构。

胡坚涛的博客 4266

【29】软考软件设计师——SQL语句编写与优化深度精讲|数据库大题延伸满分攻略

本文是《软件设计师·50讲通关|从零基础到工程师职称》专栏第29篇,承接第28篇ER图转关系模式核心内容,作为**下午第2题数据库大题核心延伸必考模块**,单模块累计占分5~8分,是数据库板块性价比极高的提分重点。全文超4000字深度拆解软考全部SQL高频考点:全覆盖多表连接底层逻辑、嵌套子查询分类实操、GROUP BY分组聚合硬核规则、索引全品类设计原理、联合索引最左匹配底层机制,搭配海量可直接复刻的考场SQL模板、历年真题完整改写案例、索引失效场景实操复盘、慢查询优化落地技巧。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 525

循环队列的插入与删除

队列:一种可以实现“先进先出”的存储结构

Lookdrama的博客 6302

数字电视中的 Closed Caption (CC) 字幕标准协议

本文将详细介绍 DVB中的 CC 字幕标准协议,包括数据结构格式、字段定义、字段占用比特数以及字段用途。此外,本文还将举例说明如何从 TS 传输流中解析 CC 字幕信息,并组织打包到电视节目中进行显示。

以实战经验介绍行业知识 670

标准论文参考文献添加方法——Zotero入门使用教程

第一篇论文投出去了,写一下最后一步的参考文献修饰润色吧! 论文的参考文献,即References,是论文的最后一步,相信不管是写毕设论文还是期刊论文都遇到过需要修改参考文献的情况,非常之麻烦。而且参考文献中经常会与生僻奇怪气体出现,一个一个修改非常浪费时间,这里介绍一下一个非常好用的软件Zetero。 第一步:软件的下载安装及绑定Word 尽量使用客户端吧,

MISAYAONE的博客 20万+

C语言实现队列

📋 个人简介 💖 作者简介:大家好,我是菀枯😜 🎉 支持我:点赞👍+收藏⭐️+留言📝 💬格言:不要在低谷沉沦自己,不要在高峰上放弃努力!☀️ 前言 前一段时间,我们试着用C语言实现了数据结构中的顺序表,单链表,双向循环链表,栈😃。今天我们再用C语言来实现另一种特殊的线性结构:队列 一. 什么是队列 队列是一种特殊的线性表,特殊之处在于它只允许在表的前端(head)进行删除操作,而在表的后端(tail)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除

m0_60447315的博客 1万+

基于 ESP32 的分布式光伏微电网智能监控系统设计与实现

设备 / 模块连接 ESP32 引脚备注I2C 总线(SDA)GPIO21所有 I2C 设备共用I2C 总线(SCL)GPIO22所有 I2C 设备共用DS18B20(单总线)GPIO18单总线通信,需外接 4.7K 上拉电阻有源蜂鸣器GPIO19低电平触发,串联 100Ω 限流电阻ESP32 供电5V/GND由 LM2596 输出 5V 供电,或直接 USB 供电(调试阶段)INA219(光伏)光伏阵列正负极接 INA219 的 VIN+/VIN-

weixin_42300449的博客 304

c语言队列的作用,C语言队列

C语言的队列(queue),是指先进先出(FIFO, First-In-First-Out)的线性表。在具体应用中通常用链表或者数组来实现。队列只允许在后端(称为rear)进行插入操作,在前端(称为front)进行删除操作单链表形式(单链队列使用链表作为基本数据结果,因此不存在伪溢出的问题,队列长度也没有限制。但插入和读取的时间代价会比较高)#include #include#include#in...

weixin_42377742的博客 1008

Android Shadow插件化框架分析与集成(一)

到此为止,本篇文章先介绍到这里,本篇文章主要介绍了:从源码的角度去集成shadow框架,从下载源码开始,到集成到自己的项目中,其中插件项目我是新建的demo应用,宿主应用是之前搭的一个MVP框架。文章中一步一步详细的介绍了宿主该如何集成,并提供了源码;介绍了插件该如何集成,同时也提供了源码。文章中还介绍了gradle的版本与AGP版本使用不当造成的问题,以及shadow源码的gradle版本与APG版本的配置,及和宿主插件应用gradle版本与AGP版本的关系。

superzhang6666的博客 1235

Linux下驱动开发_块设备驱动开发(硬件上采用SD卡+SPI协议)

这一篇文章将采用SD卡作为存储硬件,利用SPI协议与SD卡通信,完成块设备驱动开发测试。 SD卡可以更加形象的表示块设备开发过程,明白硬件如何交互,完成数据读写。

2604

创建队列 c语言_在C中创建队列

创建队列 c语言A queue in C is basically a linear data structure to store and manipulate the data elements. It follows the order of First In First Out (FIFO). C语言中的队列基本上是用于存储和操作数据元素的linear data structure 。 它...

从零开始的教程世界 3760

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

队列——(c语言实现)

队列,是一种先进先出(first in first out 简称FIFO)的数据结构,是只允许在一端进行插入数据操作,在另一端进行删除数据操作的特殊线性表,在队列中,进行插入的一端称为队尾,进行删除的一端称为队头。

2302_77041624的博客 3694

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

详解C语言队列

100// 存储队列的数组int front;// 队头指针int rear;// 队尾指针int size;// 当前队列元素个数} Queue;MAX_SIZE:定义队列的最大容量,这里为100。data:这是一个数组,实际存储队列中的元素。front:指向队头元素的位置,出队时从这里取元素。rear:指向队尾的下一个位置,用于插入新元素。循环队列特性使得它可以“回绕”到数组的起始位置。size:记录队列中当前的元素个数,方便判断队列是否为空或已满。int data;

Weiki的博客 2008

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

C语言队列的实现

C语言利用单链表实现队列的先进先出操作。难点在数据结构的使用。 代码如下: #include<stdio.h> #include<stdlib.h> typedef int elemtype, QElemType; #define OVERFLOW 0 typedef struct link { elemtype data; link *next; }link,*QueuePtr; typedef struct linkqu

a1561216的博客 1638

用链表实现的C语言队列

C语言链表实现队列

Broken_x的博客 3232

【c语言】队列

队列(Queue)是一种数据结构,它遵循先进先出(FIFO)的原则。队列在计算机科学中有着广泛的应用,如操作系统、编译器、图形学等领域。C语言中队列可以使用数组或链表来实现。队列通常有两个指针,一个指向队头,一个指向队尾。入队操作将元素插入队尾,出队操作将队头元素移出队列。队列中还包含一些基本操作,如获取队列长度、判断队列是否为空、获取队头元素等。在C语言中,使用结构体来表示队列和队列中的节点。具体实现可以参考上面的代码示例。

weixin_74337975的博客 1425

【C语言&数据结构】队列

本文全面介绍了队列这一重要数据结构。队列遵循"先进先出"原则,核心操作包括入队、出队、判空等。文章详细讲解了链式队列(链表实现)和顺序队列(数组实现)的代码实现,包括结构定义、初始化及核心操作函数。并对两种实现方式进行了对比,指出顺序队列效率高但容量固定,链式队列灵活但需额外内存。最后列举了队列在任务调度、广度优先搜索、消息队列等场景的应用。掌握队列有助于理解各类顺序处理问题的解决方案。

yuuki233233的博客 1259

如何建立队列c语言_C语言实现队列

什么是队列?上一篇文章写了什么是栈,用C语言实现了栈,既然说了栈,不说队列,感觉总是少了点什么,所以就顺手写一个队列,而且最近做项目也用到这个队列的代码。栈的特点是先进后出,队列的特点是先进先出,从这个特点可以知道,队列是比较友好的,不像栈那样最开始进去排队的人,竟然是最后一个出来的。新建一个队列因为我这个例程是使用链表实现队列的,所以新建一个队列,实际上就是开辟一个内存空间,用来存储队列的头部。...

weixin_33595317的博客 777
上一篇: C语言栈实现
下一篇: C语言二叉树与建堆
pythoncjavac++
博客等级 码龄5年 718粉丝 71原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

pythoncjavac++

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值