循环队列-队列的顺序表示和实现
使用一组地址连续的存储单元来保存队列元素,

并使用两个变量分别指向队列的前端和尾端

#include<stdio.h>
#define MAXNUM 100
#define OK 1
#define ERROR 0
#define Status int
#define ElemType int
typedef struct{int front;//队头元素所在位置int rear;//队尾元素所在的下一个位置int queue[MAXNUM];//保存队列元素的数组
}Queue;
void Init(Queue *q){q->front=0;q->rear=0;
}
//插入
Status EnQueue(Queue*q,ElemType elem){if((q->rear+1)%MAXNUM==q->front)return ERROR;//队列满,入队失败 q->queue[q->rear]=elem;//新元素入队q->rear=(q->rear+1)%MAXNUM;//队尾指针后移一位 return OK;
}
//删除
Status DeQueue(Queue*q,ElemType *pElem){if(q->front==q->rear)return ERROR;*pElem=q->queue[q->front];//队头出队 q->front=(q->front+1)%MAXNUM;//队头指针后移一位return OK;
}
int main(){Queue L;Init(&L);for(int i=0;i<10;i++){EnQueue(&L,i);}for(int j=0;j<10;j++){int t;DeQueue(&L,&t);printf("%d\n",t);}return 0;
}

含标志tag,提高效率

#include<stdio.h>
#define MAXNUM 10//队列元素个数为MAXNUM-1
#define OK 1
#define ERROR 0
#define Status int
#define ElemType int
typedef struct{int front;//队头元素所在位置int rear;//队尾元素所在的下一个位置int queue[MAXNUM];//保存队列元素的数组 int tag;//标志:区分尾指针和头指针值相同时,0为空,1为满
}Queue;
void Init(Queue *q){q->front=0;q->rear=0;q->tag=0;
}
//插入
Status EnQueue(Queue*q,ElemType elem){if(q->tag) return ERROR;//队列满,入队失败 q->queue[q->rear]=elem;//新元素入队q->rear=(q->rear+1)%MAXNUM;//队尾指针后移一位 if(q->rear==q->front)q->tag=1;return OK;
}
//删除
Status DeQueue(Queue*q,ElemType *pElem){if(q->front==q->rear&&q->tag==0)return ERROR;*pElem=q->queue[q->front];//队头出队 q->front=(q->front+1)%MAXNUM;//队头指针后移一位if(q->front==q->rear)q->tag=0;return OK;
}
int IS_Empty(Queue*q){if(q->front==q->rear&&q->tag==0)return 1;elsereturn 0;
}
int main(){Queue L;Init(&L);for(int i=0;i<10;i++){EnQueue(&L,i);}for(int j=0;j<10;j++){int t;DeQueue(&L,&t);printf("%d\n",t);}return 0;
}

循环队列-队列的顺序表示和实现相关推荐

  1. 顺序队和循环队列,队列篇(顺序队和循环队列入队出队操作)

    数据结构专升本学习,队列篇(顺序队和循环队列) 前言: 之前我们把栈学完了,比较简单,今天我们学习队列里面的顺序队和循环队列,说难不难,说简单不简单,我们需要认真学习,博主会尽力把原理和逻辑讲明白,不 ...

  2. 队列的顺序数组c语言代码,队列-队列的顺序表示和实现

    队列-队列的顺序表示和实现 和顺序栈相类似,在利用顺序分配存储结构实现队列时,除了用一维数组描述队列中数据元素的存储区域之外,尚需设立两个指针front和rear分别指示"队头"和 ...

  3. 字符串队列c语言,C语言实现循环队列(队列可存储字符串)

    项目原因,需要写一个队列来存储串口实时输出的字符串.看了网上很多博文和一些数据结构的数据,给的例子都是实现对单个数字或者字符的队列操作,并没有实现在队列中存储字符串.这里分享一种可以实现的方法. 关于 ...

  4. 13004.循环数组队列(C语言)

    1 循环数组队列 1.1 队列定义 /** loop_queue.h** Created on: Mar 2, 2022* Author: xhome.*/#ifndef OTHER_TASK_LOO ...

  5. 【华为OD机试真题 python】特异性双端队列 | 最小调整顺序次数【2022 Q4 | 100分】

    ■ 题目描述 [特异性双端队列 | 最小调整顺序次数] 给定一个队列,但是这个队列比较特殊,可以从头部添加数据,也可以从尾部添加数据,但是只能从头部删除数据. 输入一个数字n,会依次添加数字1~n(也 ...

  6. 【特异性双端队列 | 最小调整顺序次数】

    题目描述 [特异性双端队列 | 最小调整顺序次数] 给定一个队列,但是这个队列比较特殊,可以从头部添加数据,也可以从尾部添加数据,但是只能从头部删除数据. 输入一个数字n,会依次添加数字1~n(也就是 ...

  7. 从无到有算法养成篇-栈和队列·队列

    一.队列的定义 队列是啥? 数据从表的一端进,从另一端出,且遵循 "先进先出" 原则的线性存储结构就是队列. 队列的两个基本操作:入队将一个数据放到队列尾部:出队从队列的头部取出一 ...

  8. 数据结构(八) -- C语言版 -- 栈和队列 - 队列的设计与实现

    我让你知道我有啥 零.读前说明 一.队列的概述 二.队列的操作 三.队列的两种存储结构的模型概述 四.顺序存储结构的队列及实现 4.1.顺序存储结构的传统队列简易实现与测试 4.2.顺序存储结构的队列 ...

  9. MATLAB多个for循环嵌套的执行顺序、如何将生成的数据存放在一个向量或矩阵里?

    MATLAB中多个for循环嵌套的执行顺序: 当有两个for循环时,先执行一次外部for循环,再将内部循环全部执行. 当有三个for循环时,先执行一次最外部for循环,再执行一次第二层for循环,最后 ...

最新文章

  1. linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch
  2. 初步学习JS中的闭包
  3. springmvc 接收 ajax 请求
  4. 提示You don't have permission to access /index.php on this server.
  5. java基础(四) java运算顺序的深入解析
  6. 在Java EE组件中使用骆驼路线
  7. rip协议中周期性广播路由信息的报文_RIP路由理论知识详解(一)
  8. 【个人笔记】OpenCV4 C++ 快速入门 10课
  9. CentOS 7操作系统中设置系统时间/时区的方法
  10. python读取内存指针_从dll读取内存值+指针+偏移量
  11. 计算机网络有哪三种地址,IP地址的分类有哪几种
  12. App推广统计代替渠道包统计的方法
  13. 休问情怀谁得似——冰雪小五台苦旅记(十完结篇)
  14. 一文彻底弄清4G/蓝牙/WiFi/TCP/IP之间的关系
  15. 用python画动态皮卡丘_如何利用python绘制可爱皮卡丘?
  16. 算法-九九乘阶打印和计算N的乘阶结果
  17. java 开发服务器
  18. 我们期望的NFC手机方案
  19. 方舟服务器 mod文件夹,方舟mod文件夹应该放在哪 | 手游网游页游攻略大全
  20. 用户来了留不住? 5个方法,帮你提高产品黏性和用户“回头率”

热门文章

  1. 20172324 2018-2019-1 《程序设计与数据结构》第七周学习总结
  2. oracle查询重复数据出现次数
  3. JAVA基础:JDK、JRE、JVM的概念
  4. JAVA NIO概述(一):I/O模型
  5. My way on Linux - 知识梳理计划
  6. 2013.5.21号面试心得
  7. mysql data目录 说明_mysql 更改数据目录
  8. android动画延迟执行,Android 过渡动画框架
  9. tensorboard 数据降维分布图_以mnist为例探究tensorboard
  10. rnn 梯度消失爆炸