首页 > 其他分享 >数据结构练习笔记——循环队列的基本操作

数据结构练习笔记——循环队列的基本操作

时间:2023-07-26 13:12:05浏览次数:34  
标签:count 队列 int circleQueue 基本操作 数据结构 rear

循环队列的基本操作

【问题描述】根据循环队列的类型定义,完成循环队列的基本操作。主函数中测试队列。
【输入形式】一个整数m,表示入队的元素个数
【输出形式】第一行:输出队头元素 第二行:队列中元素依次出队以空格间隔
【样例输入】5
【样例输出】
1
1 3 5 7 9
【样例输入】0
【样例输出】
empty!

#include  <iostream>
using  namespace  std;
#include  <stdlib.h>
#define  MAX  100
struct  circleQueue  {
	int  data[MAX];
	int  front,rear;
	int  count;
};
//----------------------
void initQueue(circleQueue &Q){
	Q.front=Q.rear=0;
	Q.count=0;
}//初始化
void enQueue(circleQueue &Q,int n){
	Q.data[Q.rear]=n;
	Q.rear++;
	Q.count++;
}//进队列
int queueEmpty(circleQueue Q){
	return Q.count==0;
}//判断是否为空
int getFront(circleQueue Q){
	if(!queueEmpty(Q))return Q.data[Q.front];
	else {
		cout<<"empty!";
		exit(0);
	}
}//获取队首元素,若为空,输出empty!并结束程序
int deQueue(circleQueue &Q){
	int e=Q.data[Q.front];
	Q.front++;
	Q.count--;
	return e;
}//出队列
//----------------------
int  main()  {
	int  m;
 	cin>>m;
	circleQueue  Q;
	initQueue(Q);
	for(int  i=1;  i<=m;  i++)  {
		enQueue(Q,i*2-1);
	}
	cout<<getFront(Q)<<endl;
	while(!queueEmpty(Q))  {
		cout<<deQueue(Q)<<"  ";
	}
}

记录一些数据结构学习过程的习题代码,便于日后查看。如有错误,欢迎交流指正。

标签:count,队列,int,circleQueue,基本操作,数据结构,rear
From: https://www.cnblogs.com/zhuannnn/p/17582185.html

相关文章

  • Redis实现消息队列
    Redis基于内存,高性能并且提供多种数据结构供使用,那么对于Redis能不能作为消息队列?以及与专业的消息队列,如RocketMQ,Kafka等差距又在哪里?Redis提供多种方式实现消息队列,基于List,基于Pub/Sub等,如今基本广泛使用的是Redis5.0之后推出的Stream流格式,其具有支持持久化,支持消......
  • 阻塞的队列
    BLockingQueue是一个阻塞的队列,最典型的应用场景就是生产者和消费者模式。生产者和消费者模式是通过一个容器来解决生产者和消费者的强耦合问题。生产者和消费者彼此并不直接通信,而是通过阻塞队列进行通信,所以生产者生产完数据后不用等待消费者进行处理,而是直接扔给阻塞队列,消费......
  • 【学习笔记】单调队列和单调栈
    单调栈以这道题为例:P5788。我们考虑维护一个单调栈,里面存的是下标,使里面的下标对应的元素从栈顶到栈底是单调上升的。我们从\(n\rightarrow1\)枚举\(a_i\)对于每个\(i\),如果栈非空,令栈顶的下标为\(j\),若\(a_j\)不比\(a_i\)大,那么这个栈顶元素由于值又小,位置又靠后,如......
  • 初识C数据结构之“*”和“&”(指针、解引用、取地址、引用)
    这天小阿杰又在看C数据结构——顺序表中几个传参的小小的内容引起了小阿杰大大的疑惑:(教材为严蔚敏老师的《数据结构(C语言版第2版)》)可怜的小阿杰当时只知道&取地址……后来查阅资料才对其中略知一二,那咱们下面就来唠唠。顺便提一下,引用&只在C++中有,C语言......
  • 7.25 day2数据结构优化dp
    战绩:100+100+20+54=374T1据lxl说是为了成绩好看加的题,难度大概cspjT1T2朴素dp然后树状数组优化一下T3赛时脑抽链,写了个dp,一直想优化dp,其实贪心就好了,过程更加简洁,优化很显然先将区间剖分成两段端点\(s_i=s_j\)相同的多条线段将区间每个点吸附到离他右边最近的一个线段......
  • 如何构造类似数组的数据结构?
    ..介绍在开始解决数组问题之前,理解并实现类似数组的数据结构是一个很好的实践。本课教您如何实现常见的数组操作,例如插入元素、删除元素、获取元素、求数组长度以及打印数组元素。我们正在建设什么?我们将从头开始构建一个数组,其中包含一些最常见的数组操作,如上所述。我们还将学习如......
  • php redis消息队列
    1、php如何把key存储在不同的redis分片上2、php怎么查看redis的key3、用phpredis操作redis集群支持publish和subscribe吗4、php2018怎么安装redis5、redis使用php怎么进行更新php如何把key存储在不同的redis分片上php如何把key存储在不同的redis分片上redis集群部署方式......
  • LeetCode 406. 根据身高重建队列
    classSolution{public:structnode{intval;intpre;node*next;node(inta,intb,node*c){val=a;pre=b;next=c;}};voidinsert(node*&head,int......
  • 数据结构优化dp
    滚动数组在dp时经常会发现只有相邻阶段间状态才会有直接联系,在转移方程中的体现形如:只有前\(m\)个阶段能影响当前阶段的状态,因此我们不需要储存下\(n\)个阶段的所有状态,只需要储存\(m\)个阶段的状态,以做到优化存储空间的目的。用这种方法可以将dp某一维干掉,把\(\mat......
  • JavaScript数据结构和算法简述——数组
    为什么先讲数组数据结构可以简单的被分为线性结构和非线性结构。线性结构大致包括:数组(连续存储);链表(离散存储);栈(线性结构常见应用,由链表或数组增删和改进功能实现);队列(线性结构常见应用,由链表或数组增删和改进功能实现);非线性结构大致包括:树;图;其中,数组是应用最广泛的数据存储结构。它被......