首页 > 其他分享 >5_24_打卡_数据结构之循环队列

5_24_打卡_数据结构之循环队列

时间:2023-05-24 13:34:38浏览次数:39  
标签:24 return int queue MAXSIZE front 打卡 数据结构 rear

//循环队列可存储数据数量是maxsize-1
//队列长度为(front-rear+maxsize)%maxsize
//队列为空时front==rear
//队列满时 (front+1)%maxsize==rear;

#define MAXSIZE 5
#include<iostream>
using namespace std;

typedef struct queue {
	int front;
	int rear;
	int data[MAXSIZE];
}queue;

queue* initqueue()
{
	queue* q = new queue;
	q->rear = 0;
	q->front = 0;
	return q;
}

bool isfull(queue* q)
{
	if ((q->front + 1) % MAXSIZE == q->rear)
	{
		return true;
	}
	else
		return false;
}

void push(queue* q,int data)
{
	if (isfull(q))
	{
		return;
	}
	else {
		q->data[q->front] = data;
		q->front = (q->front + 1) % MAXSIZE;
	}
}


bool isempty(queue* q)
{
	if (q->front == q->rear)
	{
		return true;
	}
	else
		return false;
}

int pop(queue* q)
{
	if (isempty(q))
	{
		return -1;
	}
	else {
		int data = q->data[q->rear];
		q->rear = (q->rear + 1) % MAXSIZE;
		return data;
	}
}

void print(queue* q)
{
	int len = (q->front - q->rear + MAXSIZE) % MAXSIZE;
	int index = q->rear;
	for (int i = 0; i < len; i++)
	{
		cout << q->data[index] << "->";
		index = (index + 1) % MAXSIZE;
	}
	cout << "NULL" << endl;
}

int main()
{
	queue* q = initqueue();
	push(q, 1);
	push(q, 2);
	push(q, 3);
	push(q, 4);
	push(q, 5);
	push(q, 6);
	push(q, 7);
	print(q);
	int i = pop(q);
	pop(q);
	print(q);

	return 0;
}

标签:24,return,int,queue,MAXSIZE,front,打卡,数据结构,rear
From: https://www.cnblogs.com/wlxdaydayup/p/17428044.html

相关文章

  • 2023.5.24-人件-5月份读后感2
    最近,我阅读了人件的下一部分,有了一些感想。过去,我对于办公环境的重视程度不够。假设除了现在的职责之外,还让你负责为手下提供办公环境和公益设施。你必须为每个人确定工作环境的种类、分配的开支总数等等,而你如何着手做这些事呢?在以后,可以更加重视办公的环境。过去,我认为加班是......
  • C/C++超市商品管理系统[2023-05-24]
    C/C++超市商品管理系统[2023-05-24]9、超市商品管理系统问题描述:设计并实现一个超市商品管理系统,商品需设置不同的类型,系统可以实现对商品信息的添加,修改,删除,查找等功能,商品信息需要以文件方式保存到计算机硬盘中。基本功能:(1)商品要设置不同的类型,如水果、饮料等;(2)商品信息包......
  • 5月24日周三
    计划学习前端知识angular框架,html语法扎实的学,css,JavaScript学习后端框架,Java语言学扎实点要搞明白数据库中的字段含义,以了解数据库表如何设计!!!对数据库表进行重新理解,对论文中相应的部分进行修改!!!下午背单词,从题中,然后听听力,然后做数学不行就看数据结构回顾这三个月学......
  • 打卡 c语言趣味编程 求勾股数
    问题描述:求100以内的所有勾股数。所谓勾股数,是指能够构成直角三角形三条边的三个正整数(a,b,c)。思路:可以通过for循环遍历范围内每个可能的值,在每次循环中,调用函数检查当前的三个数是否满足勾股定理。如果满足,将其打印出来。流程图:for循环代码实现:1#include......
  • 关于redis的描述、数据结构、持久化学习笔记
    前言本文围绕面试问题、redis学习记录。本文是个人的笔记,会有遗漏或含糊的地方。描述下redisredis是一款非关系型数据库,它是以key-value的形式存在数据,因为它的数据在内存中所以它的读写速度极高。当然它支持持久化,将数据以二进制形式或者以命令的形式持久化到磁盘。然后......
  • 2023.5.23编程一小时打卡
    一、问题描述:定义抽象基类Shape,由它派生出五个派生类:Circle(圆形)、Square(正方形)、Rectangle(长方形)、Trapezoid(梯形)和Triangle(三角形),用虚函数分别计算各种图形的面积,输出它们的面积和。要求用基类指针数组,每一个数组元素指向一个派生类的对象。PI=3.14159f,单精度浮点数计算。输......
  • 打卡
    1.问题:有1、2、3、4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?2.思路:填在百位、十位、个位的数字都是1、2、3、4。使用循环排列组合所有情况,再利用判断将组成所有的排列后再去掉不满足条件的排列。3.程序流程图: 4.代码实现:#include<iostream>usingnamespace......
  • 打卡2
    问题描述:爱因斯坦出了一道数学题:有一条长台阶,若每步跨2阶,则最后剩1阶,若跨3,则剩2,若跨5,则剩4,若跨6,则剩5,若跨7,则不剩。问在1~N内,有多少数能满足?流程图:  伪代码:inputNfori<-1toNifi%2=1&&i%3=2&&i%5=4&&i%6=5&&i%7=0outputisum++outputsum代码:#include<iostrea......
  • c++打卡练习(37)
    比较两个分数的大小流程图:伪代码:源代码:#include<iostream>usingnamespacestd;intmain(){ inta1,a2,b1,b2,c1,c2,d1,d2,i; cout<<"输入要比较的两个分数"<<endl; cin>>a1; getchar(); cin>>a2; cin>>b1; getchar(); cin>>b2; if(a2>b2){ ......
  • 5月23日打卡
    例5-7常成员函举例代码部分: #include<iostream>usingnamespacestd;classR{private:intr1,r2;public:R(intr1,intr2):r1(r1),r2(r2){}voidprint();voidprint()const;};voidR::print(){cout<<r1<<":"&l......