Caijunmao
2017-08-29 04:19
采纳率: 50%
浏览 1.9k
已采纳

C语言求程序:顺序循环队列的实现和相关操作

求顺序循环队列的实现和相关操作的C语言程序代码。。。。。。。

  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

1条回答 默认 最新

  • cloudyzhao 2017-08-29 05:19
    已采纳

    #include

    #include

    #define OK 1

    #define ERROR 0

    #define QUEUE_SIZE 100

    typedef int Status;

    typedef int ElemType;

    typedef struct Qnode

    {

    ElemType base;

    int front;

    int rear;

    int count;

    } Qnode;

    Status Init(Qnode &qq)

    {

    qq.base = (ElemType
    )malloc(QUEUE_SIZE * sizeof(ElemType));

    if (qq.base == NULL) return ERROR;

    qq.front = 0;

    qq.rear = 0;

    qq.count = 0;

    return OK;

    }

    Status EnQueue(Qnode &qq, ElemType e)

    {

       if ((qq.rear + 1) % QUEUE_SIZE == qq.front)  
       return ERROR;  
       qq.base[qq.rear] = e;  
       qq.rear = (qq.rear + 1)%QUEUE_SIZE;  
       qq.count++;  
       return OK;  
    

    }

    Status DeQueue(Qnode &qq, ElemType &e)

    {

    if (qq.rear == qq.front)

    return ERROR;

    e = qq.base[qq.front];

    qq.front = (qq.front + 1) % QUEUE_SIZE;

    qq.count--;

    return OK;

    }

    Status GetTop(Qnode &qq, ElemType &e)

    {

    if (qq.rear == qq.front)

    return ERROR;

    e = qq.base[qq.front];

    return OK;

    }

    Staus Destroy(Qnode qq)

    {

    free(qq.base);

    qq.base = NULL;

    qq.count = 0;

    return OK;

    }

    int main()

    {

    Qnode qq;

    Init(qq);

    int m, i;

    printf("how many nums?\n");

    scanf("%d", &m);

    for (i = 0; i < m; i++)

    {

    int e;

    scanf("%d", &e);

    EnQueue(qq, e);

    }

    int e;

    GetTop(qq, e);

    printf("%d\n" , e);

    for (i = 0; i < m; i++)

    {

    DeQueue(qq, e);

    printf("%d ", e);

    }

    printf("\n");

    system ("pause");

    return 0;

    }

    打赏 评论

相关推荐 更多相似问题