循环队列的实现

xiaoxiao2025-04-16  12

语言:C++

#include <iostream> using namespace std; #define MAXQSIZE 100 typedef struct { int *base; int front; int rear; }SqQueue; //初始化 void InitQueue(SqQueue &Q) { //构造一个空队列Q Q.base=new int[MAXQSIZE]; if(!Q.base)cout<<"存储失败!"<<endl; Q.front=Q.rear=0; } //求队列长度 int QueueLength(SqQueue Q) { //返回Q的元素个数,即队列长度 return (Q.rear-Q.front+MAXQSIZE)%MAXQSIZE; } //入队 void EnQueue(SqQueue &Q,int e) { //插入元素e为Q的新的队尾元素 if((Q.rear+1)%MAXQSIZE==Q.front) cout<<"队已满,插入失败!"<<endl; Q.base[Q.rear]=e; Q.rear=(Q.rear+1)%MAXQSIZE; } //出队 int DeQueue(SqQueue &Q,int &e) { //删除Q的队尾元素,用e返回其值 if(Q.front==Q.rear) cout<<"队为空,返回失败!"<<endl; e=Q.base[Q.front]; Q.front=(Q.front+1)%MAXQSIZE; return e; } //输出队 void display(SqQueue &Q) { cout<<"["; while(Q.front!=Q.rear) { if(Q.front+1==Q.rear) { cout<<Q.base[Q.front]; } else { cout<<Q.base[Q.front]<<"<"; } Q.front=(Q.front+1)%MAXQSIZE; } cout<<"]"<<endl; } int main() { SqQueue Q;int x;int e;int i; cout<<"欢迎使用循环队列!功能如下:"<<endl; cout<<"--------------------------"<<endl; cout<<"[1].初始化 [2].入队"<<endl; cout<<"[3].出队 [4].取队长"<<endl; cout<<"[5].输出队 [0].退出"<<endl; cout<<"--------------------------"<<endl; cout<<"请输入:";cin>>x; while(x) { switch(x) { case 1:InitQueue(Q);break; case 2:cout<<"请输入要入队的元素:";cin>>e;EnQueue(Q,e);break; case 3:i=DeQueue(Q,e);cout<<"出队元素为:"<<i<<endl;break; case 4:i=QueueLength(Q);cout<<"当前队长为:"<<i<<endl;break; case 5:cout<<"当前队列为(队头在前):"<<endl;display(Q);break; case 0:break; default:cout<<"您的选择错误,请重新输入!"<<endl; } cout<<"请选择您需要的功能:";cin>>x; } return 0; }

 

转载请注明原文地址: https://www.6miu.com/read-5028424.html

最新回复(0)