• 《循环队列---队列的顺序表示和实现》


    //循环队列---队列的顺序表示和实现


    #include<stdio.h>
    #include<stdlib.h>
    #define TRUE 1
    #define FALSE 0
    #define OK 1
    #define ERROR 0
    #define INFEASIBLE -1
    #define OVERFLOW -2
    #define MAXQSIZE 50 //最大队列长度
    typedef int QElemType; //数据元素类型
    typedef int Status; //函数结果状态类型
    typedef struct
    {
    QElemType *base;
    int front,rear;
    }SqQueue;

    Status InitQueue(SqQueue &Q)
    {//构造一个空队列Q
    Q.base = (QElemType *)malloc(MAXQSIZE*sizeof(QElemType));
    if(!Q.base)
    exit(OVERFLOW);
    Q.front = Q.rear = 0;
    return OK;
    }

    Status EnQueue(SqQueue &Q,QElemType e)
    {//插入元素e为Q的新的队尾元素
    if((Q.rear + 1)%MAXQSIZE == Q.front)
    return ERROR; //队列满
    Q.base[Q.rear] = e;
    Q.rear = (Q.rear + 1)%MAXQSIZE;
    return OK;
    }

    int QueueLength(SqQueue Q)
    {//返回Q的元素的个数,即队列的长度
    return(Q.rear - Q.front + MAXQSIZE)%MAXQSIZE;
    }

    Status DeQueue(SqQueue &Q,QElemType &e)
    {//删除队列的头元素,用e返回其值
    if(Q.front == Q.rear)
    return ERROR;
    e = Q.base[Q.front];
    Q.front = (Q.front+1)%MAXQSIZE;
    return e;
    }

    int main()
    {
    SqQueue q;
    int i,e,n;

    //调用InitQueue(SqQueu &Q)函数,创建一个空队列
    InitQueue(q);
    printf("队列已创建好...");
    printf(" ");

    //调用EnQueue(SqQueue &Q,QElemType e)函数,插入元素e为Q的队尾元素
    /*
    printf("Please input a integer number:(ending 9999)");
    scanf("%d",&e);
    while(e!=9999)
    {
    EnQueue(q,e);
    printf("Please input a integer number:(ending 9999)");
    scanf("%d",&e);
    }
    printf(" ");
    */
    //调用EnQueue(SqQueue &Q,QElemType e)函数,插入元素e为Q的队尾元素
    printf("请输入要入队列的个数:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
    {
    printf("Please input a number:");
    scanf("%d",&e);
    EnQueue(q,e);
    }
    printf(" ");

    //调用QueueLength(SqQueue Q)函数,输出当前队列中元素的个数
    printf("队列中的元素个数为:%d",QueueLength(q));
    printf(" ");

    //调用DeQueu(SqQueue &Q,QElemType &e)函数,删除队头的元素
    printf("被删除的队头元素是:%d",DeQueue(q,e));
    printf(" ");

    //调用QueueLength(SqQueue Q)函数,输出当前队列中元素的个数
    printf("队列中的元素个数为:%d",QueueLength(q));
    printf(" ");

    return 0;
    }

  • 相关阅读:
    HDU 1002 A + B Problem II
    HDU 2602 Bone Collector WA谁来帮忙找找错
    爬楼梯问题-最大迈两步
    2106 Problem F Shuffling Along 中石油-未提交-->已提交
    2101 Problem A Snake Filled
    2078 Problem H Secret Message 中石油-未提交-->已提交
    有关 时间 空间 以及 数据类型 的总结
    hdu 2510
    hdu 1133 卡特兰 高精度
    hdu 2067
  • 原文地址:https://www.cnblogs.com/sun-/p/4861390.html
Copyright © 2020-2023  润新知