#include <iostream>
using namespace std;
#define Maxsize 100
typedef struct SqQueue{
int *base;
int front,rear;
}SqQueue;
bool InitQueue(SqQueue &Q)
{
Q.base=new int[Maxsize];
if(!Q.base) return false;
Q.front=Q.rear=0;
return true;
}
//循环队列的入队
bool EnQueue(SqQueue &Q, int e)
{
if((Q.rear+1)%Maxsize==Q.front)
return false;
Q.base[Q.rear]=e;
Q.rear=(Q.rear+1)%Maxsize; //先赋值,再++
return true;
}
bool DeQueue(SqQueue &Q, int &e) //删除Q的队头元素,并用e返回其值
{
if(Q.front==Q.rear)
return false;
e=Q.base[Q.front];
Q.front=(Q.front+1)%Maxsize;
return true;
}
//循环队列的长度
int QueueLength(SqQueue Q)
{
return (Q.rear-Q.front+Maxsize)%Maxsize;
}
//取循环队列的队头元素
int GetHead(SqQueue Q)
{
if(Q.front != Q.rear)
return Q.base[Q.front];
return -1;
}
int main()
{
SqQueue Q;
int n,x;
InitQueue(Q);
cout <<"请输入元素个数" <<endl;
cin>>n;
cout <<"请依次输入n个整型数,依次入队:" <<endl;
while(n--)
{
cin>>x;
EnQueue(Q,x);
}
cout<<endl;
cout <<"队列内元素个数,即长度:"<<QueueLength(Q)<<endl;
cout <<"队头元素:"<<GetHead(Q)<<endl;
cout <<"元素依次出队"<<endl;
while(true)
{
if(DeQueue(Q,x))
cout<<x<<"\t";
else
break;
}
cout<<endl;
cout<<"队列内元素个数,即长度:"<<QueueLength(Q)<<endl;
return false;
}
数据结构与算法365天训练营—队列的基本操作
于 2023-08-18 10:10:05 首次发布