顺序队列的基本操作
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<cstring>
#include<queue>
#include<stack>
#include<cstdlib>
#include<cmath>
#include<vector>
#include<map>
#define inf 0x3f3f3f3f
#define LL long long
const int mod = 1e9 + 7;
using namespace std;
#define MAXSIZE 100
//----队列的顺序存储结构---
typedef struct
{
int *base;
int Front;
int Rear;
} SqQueue;
//初始化
int InitQueue(SqQueue &Q)
{
Q.base=new int[MAXSIZE];
if(!Q.base)
exit(0);
Q.Front=Q.Rear;
return 1;
}
//入队
void EnQueue(SqQueue &Q,int e)
{
if((Q.Rear+1)%MAXSIZE!=Q.Front)
{
Q.base[Q.Rear]=e;
Q.Rear=(Q.Rear+1)%MAXSIZE;
}
}
//出队
int DeQueue(SqQueue &Q)
{
int e;
if(Q.Front!=Q.Rear)
{
e=Q.base[Q.Front];
Q.Front=(Q.Front+1)%MAXSIZE;
}
return e;
}
//取队头元素
void GetQueue(SqQueue Q)
{
if(Q.Front!=Q.Rear)
printf("当前队头元素:%d\n",Q.base[Q.Front]);
}
//遍历输出队列元素
void PrintQueue(SqQueue Q)
{
printf("当前队列元素:");
for(int i=Q.Front; i<Q.Rear; i++)
{
printf("%d ",Q.base[i]);
}
printf("\n");
}
int main()
{
SqQueue Q;
InitQueue(Q);
int n,e;
printf("请输入队列元素个数n: ");
scanf("%d",&n);
printf("\n请输入n个元素: ");
for(int i=0;i<n;i++)
{
scanf("%d",&e);
EnQueue(Q,e);
}
PrintQueue(Q);
GetQueue(Q);
printf("执行出队操作,删除的元素: ");
int m=DeQueue(Q);
printf("%d\n",m);
PrintQueue(Q);
return 0;
}