//一,顺序队列(麻烦&&锻炼自己能力)
#include<iostream>
using namespace std;
typedef struct{
int *elem;
char name[15][10];
int front,rear;
}squeue,*s;
int initqueue(squeue &l);
int pushqueue(squeue &l);
int popqueue(squeue &l);
int check(squeue l);
int situation(squeue l);
int i=1;
int main(){
squeue l;
int choice;
while(1)
{
system("cls");
cout<<"***********************顺序队列***************************"<<endl;
cout<<" 1-初始化 2-入队 3-出队 "<<endl;
cout<<" 4-查看病历号 5-查看候诊病人数量 0-退出 "<<endl;
cout<<"**********************************************************"<<endl;
cout<<"Enter your choice:";
cin>>choice;
switch(choice)
{
case 1:
initqueue(l);
system("pause");
break;
case 2:
pushqueue(l);
system("pause");
break;
case 3:
popqueue(l);
system("pause");
break;
case 4:
check(l);
system("pause");
break;
case 5:
situation(l);
system("pause");
break;
case 0:cout<<"感谢使用,再见";
return 0;
default:
cout<<"输入选项错误,请重新输入!"<<endl;
system("pause");
break;
}
}
}
int initqueue(squeue &l){
l.elem=new int[15];
l.front=l.rear=0;
cout<<"finish"<<endl;
}
int pushqueue(squeue &l){
if(l.rear-14==l.front){
cout<<"队列已满,请稍后再试"<<endl;
return 0; }
cout<<"请输入病人的名字"<<endl;
cin>>l.name[l.rear%15];
l.rear++;
cout<<"ok";
}
int popqueue(squeue &l){
if(l.front==l.rear){
cout<<"队空"<<endl;
return 0;
}
cout<<"下一个病历号是"<<l.front+1<<",名字是"<<l.name[l.front%15]<<endl;
l.front++;
}
int check(squeue l){
int j;
cout<<"请输入需要查找的病历号"<<endl;
cin >>j;
if(l.front==l.rear){
cout<<"队空"<<endl;
return 0;
}
if(l.front==j)
{
cout<<"您是下一个"<<endl;
}
if(j<l.front||j>l.rear){
cout<<"输入错误,请输入正确的病历号"<<endl;
check(l);
return 0;
}
while(l.front!=j){
cout<<"下一个病历号是"<<l.front+1<<",名字是"<<l.name[l.front%15]<<endl;
l.front++;
}
}
int situation(squeue l){
if(l.front==l.rear){
cout<<"队空"<<endl;
return 0;
}
while(l.front!=l.rear){
cout<<"下一个病历号是"<<l.front1<<",名字是"<<l.name[l.front%15]<<endl;
l.front++;
}
}
二,链式队列(简单&&锻炼自己的链式思维)
#include<iostream>
using namespace std;
typedef struct que{
struct que *next;
char name[10];
int data;
}S,*linkqueue;
int initqueue(linkqueue &l,linkqueue &rear);//初始化
int pushqueue(linkqueue &l,linkqueue &rear);//入队
int Popqueue(linkqueue &l,linkqueue &rear);//出队
int check(linkqueue l,linkqueue rear);
int situation(linkqueue l);
int i=1;
int main(){
linkqueue l,rear;
int choice;
while(1)
{
system("cls");
cout<<"***********************顺序队列***************************"<<endl;
cout<<" 1-初始化 2-入队 3-出队 "<<endl;
cout<<" 4-查看病历号 5-查看候诊病人数量 0-退出 "<<endl;
cout<<"**********************************************************"<<endl;
cout<<"Enter your choice:";
cin>>choice;
switch(choice)
{
case 1:
initqueue(l,rear);
system("pause");
break;
case 2:
pushqueue(l,rear);
system("pause");
break;
case 3:
Popqueue(l,rear);
system("pause");
break;
case 4:
check(l,rear);
system("pause");
break;
case 5:
situation(l);
system("pause");
break;
case 0:cout<<"感谢使用,再见";
return 0;
default:
cout<<"输入选项错误,请重新输入!"<<endl;
system("pause");
break;
}
}
}
int initqueue(linkqueue &l,linkqueue &rear){
l=new S;
rear=l;
cout<<"ok"<<endl;
}
int pushqueue(linkqueue &l,linkqueue &rear){
linkqueue p;
int e;
p=new S;
cout<<"请输入患者的名字"<<endl;
cin>>p->name;
p->data=i;
p->next=NULL;
i++;
rear->next=p;
rear=rear->next;
}
int Popqueue(linkqueue &l,linkqueue &rear){
if(!l){
cout<<"无患者"<<endl;
return 0;
}
cout<<"下一位患者病历号是"<<l->next->data<<",名字是"<<l->next->name<<endl;
l=l->next;
}
int check(linkqueue l,linkqueue rear){
cout<<"请输入病历号"<<endl;
l=l->next;
int j=l->data,x=0,flag=0;
cin>>x;
if(j==x){
cout<<"您是下一位,前面无患者"<<endl;
}
if(x<l->data||x>rear->data){
cout<<"病历号输入错误,请继续输入"<<endl;
check(l,rear);
return 0;
}
while(x!=j){
flag=1;
cout<<"患者病历号是"<<l->data<<",名字是"<<l->name<<endl;
l=l->next;
j++;
}
}
int situation(linkqueue l){
l=l->next;
if(l)
{
while(l){
cout<<"患者病历号是"<<l->data<<",名字是"<<l->name<<endl;
l=l->next;
}
}
else
cout<<"无患者"<<endl;
}