c語言排隊
❶ 用c語言編寫醫院排隊看病系統,急啊!!!求大神!!
#include <stdio.h>
#include <malloc.h>
typedef int queuetype;
queuetype num=1;
typedef struct qnode
{
queuetype data;
struct qnode *next;
} QNode; //鏈隊結點類型
typedef struct
{
QNode *front,*rear;
} QuType;
void initlqueue(QuType *L)
{
L->front=L->rear=NULL;
}
void pushlqueue(QuType *L,queuetype e)
{
QNode *p=(QNode*)malloc(sizeof(QNode));
p->data=e;
p->next=NULL;
if(!L->front)
{
L->front=p;
}
if(L->rear)
L->rear->next=p;
L->rear=p;
num++;
}
void deletlqueue(QuType *L)
{
if(L->front)
{
QNode *p;
p=L->front;
printf("第%d位選手已經就診!
",p->data);
L->front=p->next;
if(!p)
L->運拿rear=NULL;
else
free(p);
}
else
{
num=0;
printf("所有的病人都已就診完畢!
");
}
}
void showqueueperson(QuType *L)
{
QNode *p=L->front;
printf("輸出所有排隊者的序號:
");
while(p)
{
printf(" %d
",p->data);
p=p->next;
}
if(!L->front)
printf("病人都已經看病完成!
");
}
void quikSee(QuType*L,queuetype e)
{
QNode *p=L->front,*q,*t;
while(p&&p->data!=e)
{
t=p;
p=p->next;
}
if(p->data==e)
{
printf("find!%d號即可進行診療!
",p->data);
q=t->next;
if(q->next)
t->next=q->next;
if(t->next==L->rear)
t->next=L->rear=NULL; free(q);
}
else
printf("隊列中無此人!無需刪除操作!
");
}
//鏈隊類型
void SeeDoctor()
{
int sel,flag=1;
QuType *qu=(QuType*)malloc(sizeof(QuType));
queuetype quik=0;
initlqueue(qu);//創建空隊
while (flag==1) //循環執行
{
printf("1:排隊 2:就診 3:查看排隊乎碼 4.不再排隊,餘下依次就診 5:下班 請選擇:");
scanf("%d",&sel);
switch(sel)
{ //排隊,入隊
case 1: pushlqueue(qu,num); printf("
掛號成歲悄哪功!
"); break;
case 2: deletlqueue(qu);
printf("
");break; //就診,出隊
case 3: showqueueperson(qu); break; //顯示排隊病人
case 4: {
printf("若您需要馬上就診,請輸入您的號:");
scanf("%d",&quik);
quikSee(qu,quik);
printf("
");
} break; //任意順序就診
case 5: {
printf("抱歉!已下班,請排隊的病人明天再來就診!
");//下班,明天就醫!
flag=0; //退出
break;
}
default : printf("輸入錯誤,請從新輸入!
"); continue;
}
}
}
void main()
{
SeeDoctor();
}
病人的姓名等信息就在結構體里加幾個成員就行了!主要功能已經實現了!
我截張圖給你吧!