数据结构循环队列的代码实现2

#include <iostream>
//Queue
#define maxLen 5
using namespace std;
typedef struct elemType {
int elemNo;
string elemName;
}elemType;
typedef struct sqQueue {
elemType data[maxLen];
int front;
int rear;
}sqQueue;
void initQueue(sqQueue &que){
cout<<endl<<"初始化成功!"<<"当前队列总大小:"<<maxLen-1<<endl;
que.front = 0;
que.rear = 0;
}
void getLength(sqQueue que){
for(int i = 0; i < maxLen; i++){
// cout<<endl<<que.data[i].elemNo<<endl;
}
int len1 = que.rear%maxLen - que.front%maxLen;
int len = 0;
len1>0?len = len1:len = 0 - len1;
cout<<"当前队列内元素个数为:"<<len<<endl;
}
void pushQue(sqQueue &que, elemType elem) {//入队
if((que.rear+1)%maxLen!=que.front%maxLen){
elem.elemNo=que.rear;
que.data[que.rear++] = elem;
cout<<"入队成功!"<<endl;
}
else cout<<"当前队列已满!!"<<endl;
}
elemType popQue(sqQueue &que) {//出队
elemType elem;
if(que.front%maxLen!=que.rear%maxLen){
cout<<"出队元素为:\n";
cout<<que.data[que.front].elemNo<<endl;
elem = que.data[que.front++];
}
else cout<<"当前为空队列!"<<endl;
return elem;
}
elemType setAndGetEmem(int elemNo, string elemName) {
elemType elem;
elem.elemNo = elemNo;
elem.elemName = elemName;
return elem;
}
void menu (){
cout<<endl<<"\n1.初始化队列\n2.入队\n3.出队\n4.获取队列所有元素\n5.退出"<<endl;
cout<<"请输入选项: "<<endl;
}
int main() {
sqQueue que; //声明变量
while(1){
menu();
int choice = 1;
cin>>choice;
switch(choice){
case 1:initQueue(que);//初始化
break;
case 2:pushQue(que, setAndGetEmem(1, "test")); //入队
break;
case 3:popQue(que); //出队
break;
case 4:getLength(que); //获队列元素
break;
case 5:cout<<"已退出!!";return 0;
break;
default:cout<<"输入有误!"<<endl;
}
}
return 0;
}