#include
#include
#include
using namespace std;
#define OK 1
#define ERROR -1
typedef int status;
typedef struct{
int number;
char name[100];
}ElemType;
typedef struct Qnode{
ElemType data;
struct Qnode *next;
}Qnode,*QuenePtr;
typedef struct{
QuenePtr front;
QuenePtr rear;
}linkQuene;
status CreateQuene(linkQuene &Q);
status EnQuene(linkQuene &Q,int n);
status DeQuene(linkQuene &Q);
status SortQuene(linkQuene Q,int e);
status Sort2Quene(linkQuene Q);
status Sort3Quene(linkQuene Q);
status CompareQuene(linkQuene Q,QuenePtr p);
int main()
{
int a,m,n,e,j;
linkQuene Q;
Q.front=NULL;
QuenePtr q;
while(1)
{
cout<<"1,上班 "<<"2,候诊 "<<"3,就诊"<>a;
switch(a)
{
case 1:
{
m=CreateQuene(Q);
if(m==-1)
{
cout<<"上班失败!请重新上班"<>n;
m=EnQuene(Q,n);
if(m==1)
{
cout<<"候诊病人输入成功!"<next;
cout<<"请输入查看人的病历号:";
cin>>e;
m=SortQuene(Q,e);
if(m==-1)
{
cout<<"此病历号不存在!查看失败!"<data.number<<" "<data.name<next;
}
}
break;
}
case 5:
{
m=Sort2Quene(Q);
if(m==-1)
{
cout<<"已无病人候诊!"<next=NULL;
Q.rear=Q.front;
return OK;
}
status EnQuene(linkQuene &Q,int n)
{
QuenePtr p;
int i=0,j;
p=new Qnode;
printf("请输入第%d个病人的病历号和姓名:",i+1);
scanf("%d%s",&p->data.number,p->data.name);
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
for(i=1;idata.number,p->data.name);
j=CompareQuene(Q,p);
while(j==-1)
{
cout<<"此病历号前面已存在,请重新输入病历号!"<data.number,p->data.name);
j=CompareQuene(Q,p);
}
p->next=NULL;
Q.rear->next=p;
Q.rear=p;
}
return OK;
}
status DeQuene(linkQuene &Q)
{
if(Q.front==Q.rear)
return ERROR;
QuenePtr p;
p=Q.front->next;
Q.front->next=p->next;
if(Q.rear==p)
Q.rear=Q.front;
delete p;
return OK;
}
status SortQuene(linkQuene Q,int e)
{
QuenePtr p;
int i=0;
p=Q.front->next;
while(p!=NULL)
{
if(p->data.number==e)
{
break;
}
else
{
i++;
p=p->next;
}
}
if(p==NULL)
return ERROR;
else
return i;
}
status Sort2Quene(linkQuene Q)
{
int i=0;
if(Q.front==Q.rear)
return ERROR;
QuenePtr p;
p=Q.front->next;
while(p!=NULL)
{
i++;
p=p->next;
}
return i;
}
status Sort3Quene(linkQuene Q)
{
QuenePtr p;
p=Q.front->next;
while(p!=NULL)
{
cout<data.number<<" "<data.name<next;
}
}
status CompareQuene(linkQuene Q,QuenePtr p)
{
QuenePtr q;
q=Q.front->next;
while(q!=NULL)
{
if(q->data.number==p->data.number)
{
return ERROR;
}
q=q->next;
}
return OK;
}