欢迎光临散文网 会员登陆 & 注册

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

2023-08-05 23:44 作者:爱编程的飙尘  | 我要投稿

#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;

}

数据结构循环队列的代码实现2的评论 (共 条)

分享到微博请遵守国家法律