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

发布时间 2023-07-26 12:56:59作者: 某zhuan

循环队列的基本操作

【问题描述】根据循环队列的类型定义,完成循环队列的基本操作。主函数中测试队列。
【输入形式】一个整数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)<<"  ";
	}
}

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