数据结构-------队列基本操作

数据结构链队列的基本操作 数据结构链队列的基本操作 在这里插入代码片#include<stdio.h> #include<stdlib.h> #define QElemType int #define Status int #define STACK_INIT_SIZE 100 #define STACKINCREMENT 10 #define OK 1 #define ERROR 0... 阅读详情

队列的概念

一种特殊的线性结构! 只允许在一端进行插入数据的操作,在另一端进行删除数据的操作!
有先进先出的特性!
另外,其储存结构分为顺序的和链性的即分为顺序队列和链式队列

顺序队列有大量的缺陷,比如:要搬移大量元素,溢出或者假溢出!!
链式队列:一个特殊的单链表(具有头结点)

为了解决问题引入了循环队列

这里!!!!
只有链式队列的结构体以及一些基础操作!!
关于其他的结构,会在今后的时间里依次发出!!

关于链式队列

首先,给出队列的结构体
其中包含了 队头和队尾两个链表结构

typedef int DataType;
typedef struct ListNode                //这里是链表结点的结构体
{
    struct ListNode* _pNext;
    DataType data;
}ListNode, *PListNode;

typedef struct Queue
{
    PListNode _pHead;                 //队头
    PListNode _pTail;                 //队尾
}Queue,*PQueue;

基本操作

//申请新结点
PListNode BuyNewNode(DataType data)
{
    PListNode pNewNode = (PListNode)malloc(sizeof(ListNode));

pNewNode->_pNext = NULL;
pNewNode->data = data;

return pNewNode;
}

//初始化队列
void QueueInit(PQueue p)
{
assert(p);

PListNode pNewNode = BuyNewNode(0);          //为队列申请一个头结点,不存放数据

p->_pHead = p->_pTail = pNewNode;                   //队头队尾均指向该结点

}
//入队列------>相当于链表尾插
void QueuePush(PQueue p, DataType data)
{
    if (p == NULL)                                    //参数检测
    {
        assert(0);
        return;
    }

PListNode pNewNode = BuyNewNode(data);            //申请一个新结点
p->_pTail->_pNext = pNewNode;                     //尾插
p->_pTail = pNewNode;                             //更新队尾指针的指向

}
//出队列----->相当于头删
void Queuepop(PQueue p)
{
    if (p == NULL)                        //参数检测
    {
        assert(0);
        return;
}

PListNode pDelNode = NULL;

pDelNode = p->_pHead->_pNext;             //将待删结点保存
p->_pHead->_pNext = pDelNode->_pNext;     //更新队头指针指向

free(pDelNode);                         //释放待删除结点空间并且赋空
pDelNode = NULL;
}
//获取队列中元素个数
int QueueSize(Queue p)
{
    PListNode pCur = NULL;                //创建遍历指针
    int count = 0;                        //创建计数器

    pCur = p._pHead->_pNext;
    while (pCur)                           //遍历整个队列
    {
        ++count;
        pCur = pCur->_pNext;
    }

    return count;
}
//判断队列是否为空
int QueueEmpty(Queue p)
{

    return p._pHead == p._pTail ? 1 : 0;

}
//获取对头元素
DataType QueueFront(Queue p)
{
    if (QueueEmpty(p))                 //判空
    {
        printf("队列已空!!\n");
        return 0;
    }
    return p._pHead->_pNext->data;

}
//获取队尾元素
DataType QueueTail(Queue p)
{
    if (QueueEmpty(p))
    {
        printf("队列已空!!!\n");
        return 0;
    }
    return p._pTail->data;
}

函数测试结果!!!!

这里写图片描述

最后!!!

1、我会在今后的时间里,将队列的一些内容补全!!
2、大家可以关注一下我这个小菜鸟!!
3、谢谢你们的观看!!
这里写图片描述

数据结构-队列操作-用数组实现队列基本操作 数据结构中的队列基本操作,我这里是也是为了学习记录我自己的书写的代码过程.其中包含取队列的新建,新增元素,删除元素,取指定索引值,向元素尾部追加元素 等等! 1、 场景 1.1、 中文描述 数据结构中的... 阅读详情

相关推荐

数据结构之栈和队列---队列的基本操作

问题:实现队列的基本操作,内容包括队列的结构体,队列的初始化,队列的销毁,进队操作及出队操作

逆天的博客 1213

【数据结构】队列的基本操作

编写程序,实现链式、循环队列的基本操作。

Jesonary的博客 2857

数据结构实验项目三:队列的基本操作应用

课程名称:数据结构 实验目的: 1.掌握队列的定义及实现; 2.掌握利用队列的基本操作。 实验要求: 1、使用链式结构完成队列的各种基本操作; 2、补充完善教材81页的舞伴问题。 实验项目名称:队列的基本操作应用 实验过程: 1、先建立一个舞者队列,依次往队列中添加人员信息(8个人,5男3女); 2、分别创建男女队列; 3、从舞者队列中...

pioneer1 1397

数据结构:队列的基本操作

队列是一种先进先出(First in First Out)的线性表,简称FIFO。与栈不同,栈是一种后进先出(先进后出)的线性表。在队列中,允许插入的一端称为队尾,允许删除的一端称为队头。假设队列是q=(a1,a2,…,an),那么a1就是队头元素,而an是队尾元素。这样我们就可以删除时,总是从a1开始,而插入时,列在最后。这也比较符合我们通常生活中的习惯,排在第一个的优先出列,最后来的当然在队伍的最后。队列分为顺序队列和循环队列。顺序队列我们可以利用数组或者链表实现。这里,我们选择用链表实现顺序队列。 链

m0_51148715的博客 8620

从Frenet坐标系到多项式拟合:Lattice Planner核心原理拆解与调参指南

本文深入解析了自动驾驶轨迹规划中Lattice Planner的核心原理,重点阐述了其在Frenet坐标系下解耦横纵向规划、利用五次和四次多项式拟合轨迹的数学基础。文章提供了从坐标系转换、采样策略到成本函数设计的完整工程实践指南,并分享了关键的参数调优经验,旨在帮助开发者高效实现稳定、平滑且安全的轨迹规划。

tech5的博客 1111

Linux运维踩坑实录:手把手教你修复LVM中PV显示[unknown]的诡异问题

本文详细解析了Linux运维中LVM物理卷(PV)显示[unknown]的故障现象及修复方法。通过分析问题根源、提供标准修复流程和特殊场景处理方案,帮助运维人员快速解决VG容量异常、PV状态丢失等问题,并分享预防措施与最佳实践,确保LVM存储系统的稳定运行。

weixin_26869081的博客 348

数据结构之队列基本操作

如上图所示,可以看到当队列中只有F元素,这时候仍满足条件,但很显然可以看出这是一种假的队列上溢出,在队列仍然存在空的位置可以存放元素,因而选择简单的顺序队列满足不了队列的特点,为了解决这个问题,这里通过循环队列的方式来解决。循环队列的实现是通过顺序存储的方式来实现。那么为什么不叫做顺序队列呢,我们知道顺序存储实现是在内存中分配一块连续的存储单元存放队列中的元素,假设创建了一个存放10个存储单元的顺序队列,并进行一系列的出队、入队操作,观察rear、front指针的位置,如下图所示。删除元素称为出队或离队。

zhj2003_的博客 773

C#调用Halcon程序三种方法

C#调用Halcon程序三种方法 1.halcon导出C#文件,在C#里面调用 2.在C#里面使用Halcon引擎调用Halcon程序 3.在C#里面使用Halcon引擎调用.hdev下本地函数或者.hdvp外部函数 Halcon引擎手册:C:/Program Files/MVTec/HALCON-21.11-Progress/doc_en_US/html/manuals/programmers_guide/programmers_guide_0120.html 1.导出C#(代码我只给出类,需要调用)

A541925504的博客 1万+

数据结构——队列的基本操作

介绍🍃数据结构专区数据结构参考该部分知识参考于《数据结构(C语言版 第2版)》67~73页🌈每一个清晨,都是世界对你说的最温柔的早安:ૢ(≧▽≦)و✨目录前言1、队列的基本概念2、基于数组的队列2.1 宏定义2.2 数组队列的结构体定义2.3 队列的初始化2.4 销毁队列2.5 求队列长度2.6 入队2.7 出队2.8 获取队头元素2.9 遍历打印2.10 整体代码(含测试)3、基于链表的队列3.1 宏定义3.2 链表队列的结构体定义3.3 队列的初始化。

2301_80492355的博客 2721

RSA 2048/4096 签名校验算法

RSA算法是一种非对称密码算法,所谓非对称,就是指该算法需要一对密钥,使用其中一个加密,则需要用另一个才能解密。 RSA是目前最有影响力和最常用的公钥加密算法,它能够抵抗到目前为止已知的绝大多数密码攻击,已被ISO推荐为公钥数据加密标准。 今天只有短的RSA钥匙才可能被强力方式解破。到2008年为止,世界上还没有任何可靠的攻击RSA算法的方式。只要其钥匙的长度足够长,用RSA加密的信息实际上是不能...

qq_38769551的博客 9499

实测|龙虾机器人(OpenClaw)Windows系统部署全攻略(含避坑指南)

先简单科普下:龙虾机器人本质是一款开源AI代理框架,核心优势是“能行动、可本地、高灵活”——它不内置大模型,需要对接第三方AI接口(如GPT、Claude、阿里云百炼等),但能将AI的指令转化为实际的系统操作,相当于给AI配了一个“能动手的身体”,这也是它和普通对话大模型的核心区别。今天就结合自己的实测经历,从环境准备、分步部署、初始化配置,到常见问题排查,写一篇保姆级攻略,不管是新手还是有一定技术基础的同学,都能跟着一步步完成部署,少走弯路~解决方案:检查聊天软件插件是否安装成功,权限是否配置完整;

wohaiweifaju的博客 1万+

数据结构之队(循环队列)的基本操作和实现

引言:这篇文章的末尾有完整的实现代码,前面还是先进行分步实现,即我们探讨一下为什么要这样做,以及我们应该怎么样一步一步的实现循环队列。 目录 一、队列的概念 二、队的基本操作 三、对于队的操作,了解若干个规则 四、对队列的基本操作进行实现 (1)、队的初始化 (2)、判断队是否为空 (3)、求队列的长度 (4)、入队操作 (5)、出队操作 (6)、求队首元素 (7)、主函数 (8)、运行结果 (9)、完整代码 总结 一、队列的概念 我们可以把队列理解...

BaoITcore的博客 6715

python实现下载和离线安装包环境

导出当前电脑python安装的所有包列表requirement.txt。

m0_60352504的博客 1676

数据结构之队列(链式队列)的基本操作与实现

这篇文章的末尾有完整的实现代码,书写不易,转载请附上本文章链接。 一、链式队列的概念 何为链式队列,想到链式队列大家应该都会想到顺序表的单链表的基本操作,我们来对比一下:单链表是用一个头指针或者是尾指针来实现元素的插入和删除等,即头插法和尾插法。而链式队列呢,我们都知道队列是一个在队首进行出队再队尾进行入队,而不是在一段完成任务,所以我们这里就需要两个指针分别指向队列的头front和尾rear,他们两个各司其职,当要进行出队操作时,头指针front说了算,当要进行入队操作时,尾指针re...

BaoITcore的博客 2万+

华为OD机试真题 新系统【查找温度记录统计信息】

华为OD机试 新系统真题【查找温度记录统计信息】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找温度记录统计信息】多语言题解。

qq_45776114的博客 486

nvidia jetson orin调试 MAX96712 serdes相机(SG2-AR0233C-GMSL2)

背景:想了解一下关于nvidia orin camera相关的模块,基于Drive Orin demo板的话,没有合适的相机,用 nvsipl框架点亮 GMSL相机不知如何下手,那么基于nvidia Jetson orin的话,目前国内有对应的转接板以及GMSL相机可以参考,基于此,那么本文详细记录一下关于nvidia orin的相关踩坑记录;需要Nvidia Jetson Orin开发板一个,MIPI转接板一个,MIPI转GMSL转接板一个,GMSL线束(fakra单线束),GMSL摄像头一个。

qq_30025621的博客 4446

数据结构严蔚敏 队列基本操作 C语言实现

【数据结构严蔚敏】 第三章 队列基本操作C语言 队列基本操作与栈类似,区别是删除元素时根据先进先出原则(FIFO),下面给出链队列的基本操作。 代码部分 1.基本结构定义 typedef int QElemType; //元素类型 typedef int Status; typedef struct QNode { QElemType data; struct QNode *next; }...

欢乐佛的博客 4425

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

数据结构实验三——栈和队列的基本操作

** 一、实验内容 ** 1. 实验目的 编程实现顺序栈和链栈的基本操作:建栈,取栈顶元素,入栈,出栈; 编程实现循环队列和链队列的基本操作:建队列,取队头元素,入队,出队。 2. 基本要求 掌握栈的顺序存储结构、链式存储结构及其基本操作; 掌握队列的顺序存储结构、链式存储结构及其基本操作。 4. 支撑的课程目标 本实验项目可以支撑“目标1. 理解数据结构的基本概念、计算机内部数据对象的表示和特性。掌握线性表、树、图等数据逻辑结构、存储结构及其差异以及各种操作的实现。”、和“目标2能够针对实际问题选

weiyuexin的博客 6288

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

数据结构(C语言)-循环队列基本操作

文章首发于 2020-10-15 知乎文章:数据结构(C语言)-循环队列基本操作 作者:落雨湿红尘(也是我o) 01.队列介绍 队列是一种先进先出(first in first out,FIFO)的线性表,是一种常用的数据结构。 它只允许在表的前端(front)进行删除操作,而在表的后端(rear)进行插入操作,和栈一样,队列是一种操作受限制的线性表。进行插入操作的端称为队尾,进行删除操作的端称为队头。队列中没有元素时,称为空队列。 ...

qq_44025638的博客 7624

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

数据结构栈和队列的基本操作

前言 这一篇我就不附书上代码了,太慢。 线性表的应用 线性表的合并 int ListLength(LNode L) { int i=0; LinkList p; p=L.next; while(p) { i++; p=p->next; } return i; } void MergeList(LinkList LA,LNode LB) { int m,n,i,e; m=ListLength(*LA);n=ListLength(

lizhi20210729的博客 1792

数据结构线性表,栈,队列的基本操作

数据结构线性表,栈,队列的基本操作顺序表的基本操作定义顺序表初始化打印顺序表获取顺序表长度创建一个顺序表,每个元素随机赋值在指定位置处插入一个新的元素获取顺序表中指定位置处的元素值查找在线性表中是否含有指定元素删除顺序表中指定位置处的元素清空一个顺序表,将顺序表的length置为0;说明单链表的基本操作定义单链表初始化创建一个单链表获取链表的长度打印整个链表获取指定位置处的节点元素插入节点追加节点...

亚鹏的博客 790

数据结构5_队列的实现和基本操作

数据结构6_列表的概念与基本操作 队列: 队列是一种先进先出(First In First Out,FIFO)的操作受限的线性表,只能在两端操作,一端只能进叫做队尾(rear),一端只能出叫做队头(front)。和栈相似,队列可以用顺序存储也可以用链式存储;可以把队列想象成一个购票队伍,买完票的总是先离开队列,这也是队列这个称谓的由来; 1. 顺序队列: 顺序队列用一段连续的空间存储数据元素; ...

毛钱儿的博客 1156

【数据结构系列】队列的基本操作及实现

DATE:2020.4.21 1、队列的定义 队列是一种特殊的线性表,特殊在于队列限定在一端进行插入,在另一端进行删除。 队列有两种物理存储结构: 1、顺序队列:循环队列是为了解决队列的“假溢出”现象。 2、链队列:队列的链式存储 2、队列的基本操作(创建、入队、出队、遍历) #include <stdio.h> #include <stdlib.h> #define ...

优快云明星博主,认证博客专家,视频、Matlab领域优质创作者。 2457

数据结构队列的基本操作

#include #include // 链表:队列的链式存储结构 typedef struct QueueNode { char date; struct QueueNode *next; }qnode, *QueuePtr; // 指向队列头和尾的指针结构体 typedef struct { QueuePtr front; // 队头指针 QueuePtr

513

数据结构 队列的基本操作

简单的数据结构中队列的基本操作,希望对初学者有所帮助。 (个人认为还是挺详细的、且简明易懂,这是我学数据结构是老师布置实验报告作业) #include<stdio.h> #include<stdlib.h> typedef struct QNode{ int data; struct QNode * next; }QNode, * Queueprt; typedef struct { Queueprt front; //队头指针 Queueprt rear; //队

help_child的博客 373
上一篇: 栈应用的逆波兰表达式(优化)
下一篇: 数据结构课程设计——链表合并
Code_zx
博客等级 码龄9年 83粉丝 38原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值