循环队列-队列的顺序表示和实现
循环队列-队列的顺序表示和实现
使用一组地址连续的存储单元来保存队列元素,
并使用两个变量分别指向队列的前端和尾端
#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;
}
循环队列-队列的顺序表示和实现相关推荐
- 顺序队和循环队列,队列篇(顺序队和循环队列入队出队操作)
数据结构专升本学习,队列篇(顺序队和循环队列) 前言: 之前我们把栈学完了,比较简单,今天我们学习队列里面的顺序队和循环队列,说难不难,说简单不简单,我们需要认真学习,博主会尽力把原理和逻辑讲明白,不 ...
- 队列的顺序数组c语言代码,队列-队列的顺序表示和实现
队列-队列的顺序表示和实现 和顺序栈相类似,在利用顺序分配存储结构实现队列时,除了用一维数组描述队列中数据元素的存储区域之外,尚需设立两个指针front和rear分别指示"队头"和 ...
- 字符串队列c语言,C语言实现循环队列(队列可存储字符串)
项目原因,需要写一个队列来存储串口实时输出的字符串.看了网上很多博文和一些数据结构的数据,给的例子都是实现对单个数字或者字符的队列操作,并没有实现在队列中存储字符串.这里分享一种可以实现的方法. 关于 ...
- 13004.循环数组队列(C语言)
1 循环数组队列 1.1 队列定义 /** loop_queue.h** Created on: Mar 2, 2022* Author: xhome.*/#ifndef OTHER_TASK_LOO ...
- 【华为OD机试真题 python】特异性双端队列 | 最小调整顺序次数【2022 Q4 | 100分】
■ 题目描述 [特异性双端队列 | 最小调整顺序次数] 给定一个队列,但是这个队列比较特殊,可以从头部添加数据,也可以从尾部添加数据,但是只能从头部删除数据. 输入一个数字n,会依次添加数字1~n(也 ...
- 【特异性双端队列 | 最小调整顺序次数】
题目描述 [特异性双端队列 | 最小调整顺序次数] 给定一个队列,但是这个队列比较特殊,可以从头部添加数据,也可以从尾部添加数据,但是只能从头部删除数据. 输入一个数字n,会依次添加数字1~n(也就是 ...
- 从无到有算法养成篇-栈和队列·队列
一.队列的定义 队列是啥? 数据从表的一端进,从另一端出,且遵循 "先进先出" 原则的线性存储结构就是队列. 队列的两个基本操作:入队将一个数据放到队列尾部:出队从队列的头部取出一 ...
- 数据结构(八) -- C语言版 -- 栈和队列 - 队列的设计与实现
我让你知道我有啥 零.读前说明 一.队列的概述 二.队列的操作 三.队列的两种存储结构的模型概述 四.顺序存储结构的队列及实现 4.1.顺序存储结构的传统队列简易实现与测试 4.2.顺序存储结构的队列 ...
- MATLAB多个for循环嵌套的执行顺序、如何将生成的数据存放在一个向量或矩阵里?
MATLAB中多个for循环嵌套的执行顺序: 当有两个for循环时,先执行一次外部for循环,再将内部循环全部执行. 当有三个for循环时,先执行一次最外部for循环,再执行一次第二层for循环,最后 ...
最新文章
- linux diff 补丁文件夹,LINUX下制作补丁文件 diff,patch
- 初步学习JS中的闭包
- springmvc 接收 ajax 请求
- 提示You don't have permission to access /index.php on this server.
- java基础(四) java运算顺序的深入解析
- 在Java EE组件中使用骆驼路线
- rip协议中周期性广播路由信息的报文_RIP路由理论知识详解(一)
- 【个人笔记】OpenCV4 C++ 快速入门 10课
- CentOS 7操作系统中设置系统时间/时区的方法
- python读取内存指针_从dll读取内存值+指针+偏移量
- 计算机网络有哪三种地址,IP地址的分类有哪几种
- App推广统计代替渠道包统计的方法
- 休问情怀谁得似——冰雪小五台苦旅记(十完结篇)
- 一文彻底弄清4G/蓝牙/WiFi/TCP/IP之间的关系
- 用python画动态皮卡丘_如何利用python绘制可爱皮卡丘?
- 算法-九九乘阶打印和计算N的乘阶结果
- java 开发服务器
- 我们期望的NFC手机方案
- 方舟服务器 mod文件夹,方舟mod文件夹应该放在哪 | 手游网游页游攻略大全
- 用户来了留不住? 5个方法,帮你提高产品黏性和用户“回头率”