数据结构,循环队列各功能的实现

#include<stdio.h>
#include<malloc.h>
#define MAXLEN 100
typedef struct{
    int data[MAXLEN];
    int front,rear;
}csequeue;
void emptyqueue(csequeue *q)
{
    q->front=q->rear=MAXLEN-99;
}
void Inqueue(csequeue *q)
{
    int x;
    printf("\t\t请输入要进队的整数,以数字0结束!!!\n");
    while(1)
    {
        scanf("%d",&x);
        if(q->front==(q->rear+1)%MAXLEN)
        {
            printf("\t\t队列已满,无法进队\n");
            return ;
        }
        else if(x==0)
            break;
        else
        {
            q->rear=(q->rear+1)%MAXLEN;
            q->data[q->rear]=x;
        }
    }
    printf("\t\t进队成功\n");
}
void Outqueue(csequeue *q)
{
    if(q->front==q->rear)
    {
        printf("\t\t队列为空,无法出队\n");
        return ;
    }
    else
    {
        q->front=(q->front+1)%MAXLEN;
        printf("\t\t输出队首元素\n");
        printf("%d\n",q->data[q->front]);
    }
}
void Showqueue(csequeue *q)
{
    int i;
    if(q->rear==q->front)
    {
        printf("\t\t队列为空,请将元素入队\n");
        return ;
    }
    else
    {
        i=q->front;
        printf("\t\t队列中的元素为:\n");
        while(1)
        {
            if(i==q->rear)
                break;
            else
            {
                i=(i+1)%MAXLEN;
                printf("%d ",q->data[i]);
            }
        }
    }
}
void Lenthqueue(csequeue *q)
{
    int len;
    len=(q->rear-q->front+MAXLEN)%MAXLEN;
    printf("\t\t%d\n",len);
}
int main ()
{
    int m;
    csequeue q;
    emptyqueue(&q);
    printf("\t\t\t     ----循环队列----\n\n");
    while(1)
    {
        printf("\n\t\t*******************************************\n");
        printf("\t\t*                  指令说明               *\n");
        printf("\t\t*               1:进      队              *\n");
        printf("\t\t*               2:出      队              *\n");
        printf("\t\t*               3:显      示              *\n");
        printf("\t\t*               4:求队列长度              *\n");
        printf("\t\t*               0:返      回              *\n");
        printf("\t\t*******************************************\n\n");
        printf("\t请输入指令:");
        scanf("%d",&m);
        if(m==1)
            Inqueue(&q);
        else if(m==2)
            Outqueue(&q);
        else if(m==3)
            Showqueue(&q);
        else if(m==4)
            Lenthqueue(&q);
        else if(m==0)
            return 0;
        else
            printf("输入数据错误,请重新输入!!!\n");
    }
    return 0;
}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值