循环队列(用标志位实现方法)

来源:互联网 发布:五毒风湿骨刺丹,淘宝网 编辑:程序博客网 时间:2024/06/05 23:43
/*循环队列(用标志位实现方法)*/#include<stdio.h>#define m 10typedef struct cycque{    int data[m];    int rear;           /*队尾指针*/    int quelen;         /*标志*/}CycQ;/*初始化*/void InitQue(CycQ *CQ){    CQ->rear=0;    CQ->quelen=0;}/*判队列空*/int EmptyQue(CycQ *CQ){    if(CQ->quelen==0)        return 1;    else        return 0;}/*入队列*/int EnQue(CycQ *CQ,int x){    if(CQ->quelen==m)    {        printf("队列满!\n");/*队列满,入队失败。*/        return 0;    }    else    {        CQ->rear=(CQ->rear+1)%m;        CQ->data[CQ->rear]=x;        CQ->quelen=CQ->quelen+1;        return 1;    }}/*出队列*/int OutQue(CycQ *CQ,int *x){    if(EmptyQue(&CQ))    {        printf("队列空!\n");        return 0;    }    else    {        CQ->quelen=CQ->quelen-1;        *x=CQ->data[(CQ->rear+m-CQ->quelen)%m];        return 1;    }}/*取队列首元素*/int GetHead(CycQ *CQ){    int x;    x=CQ->data[(CQ->rear+m-CQ->quelen)%m];    return x;}main(){    CycQ CQ;    InitQue(&CQ);    int i,x;    printf("----创建队列----\n");    for(i=0;i<m;i++)    {        printf("请输入第%d个队列元素:\n",i+1);        scanf("%d",&x);        EnQue(&CQ,x);    }    printf("----输出队列----\n");    while(!EmptyQue(&CQ))    {        x=GetHead(&CQ);        OutQue(&CQ,&x);        printf("%d\t",x);    }}
阅读全文
0 0