代码可运行,有一个功能不会做,即排号时能统计排在前面的人数,求助

#include

#include
#define ERROR 0
#define OK 1
#define N 5

typedef int ElemType;
typedef int Status;
typedef struct QNode
{ ElemType data;
struct QNode * next;
} QNode,*QueuePtr;

typedef struct
{
QueuePtr front;
QueuePtr rear;
}LinkQueue ;

Status InitQueue(LinkQueue *Q);
Status EnQueue(LinkQueue *Q);
Status DeQueue(LinkQueue *Q,ElemType *e);

Status InitQueue(LinkQueue *Q)
{ Q->front=(QueuePtr)malloc(sizeof(QNode));
if (Q->front ==NULL) return ERROR;
Q->rear=Q->front;
Q->front->data=0;

Q->front->next=NULL;
return OK;
}

Status EnQueue(LinkQueue *Q)

{
QueuePtr p;
p= (QueuePtr)malloc(sizeof(QNode));
if(!p) return ERROR;
p->data = Q->rear->data+1;
p->next=NULL;
Q->rear->next =p;
Q->rear =p;
return OK;
}

Status DeQueue(LinkQueue *Q,ElemType *e)
{ QueuePtr p;
if (Q->front == Q->rear) return ERROR;

p=Q->front->next;
*e=p->data;
Q->front->next = p->next;
if(Q->rear ==p)
Q->rear=Q->front;
free(p);
return OK;
}

int main() {
int x;
Status T;
LinkQueue Q;
while(1) {
system("cls");
printf("\n\n\n\n\n\n\n\n");

    printf("\t\t\t\t\t1:初始化\n");
    printf("\t\t\t\t\t2:排号\n");
    printf("\t\t\t\t\t3:叫号\n");
    printf("\t\t\t\t\t4:系统设置\n");
    printf("\t\t\t\t\t5:退出\n");
    printf("\t\t\t\t\t\t请输入您的选择(1-5)=:");
    scanf("%d",&x);
    if(x==5) break;
    switch(x) { 
        case 1:system("cls");
        printf("正在初始化");
        T=InitQueue(&Q);
        printf("初始化成功");
        break;
        case 2:
        system("cls");
        int w;

        printf("排号请输入1\n");
        scanf("%d",&w);
        if(w==1)
        {
        T=EnQueue(&Q);
        printf("排号成功);
        continue;}
        else
            break;




        case 3:system("cls");
        int e;
        T=DeQueue(&Q,&e);
        if(T==ERROR)
        printf("无人排号");
        else
        printf("请%d号客户前往窗口\n",e);
        break;

        default:printf("error"); break;
    }
    printf("\n");
    system("pause");
}

}