从流域到海域 2016-04-02 01:56 采纳率: 50%
浏览 6877
已采纳

要求循环队列不损失一个空间全部都能得到利用, 设置一个标志域tag , 区分头尾指针相等的情况

我这个算法不知道为什么不能初始化,可能犯了很蠢的错误,求大神解答!!!

 /*循环队列_使用tag表示空或满_Solo*/
#include <stdio.h>

#define MAXSIZE 50
#define FALSE 0
#define TRUE  1

typedef char CSQueueElemType; 
typedef struct {
    CSQueueElemType elem[MAXSIZE];
    int front;
    int rear;
    int tag;
} CSQueue;
/*初始化*/
int InitCSQueue(CSQueue *Q) {
    Q->front = Q->rear = 0;
    Q->tag = 0;    //tag = 1表示队列已满

    return TRUE;
}
int EntCSQueue(CSQueue *Q, CSQueueElemType x) {
    if((Q->front == Q->rear) && (Q->tag == 1)) {
        printf("OVERFLOW");
        return FALSE; 
    }
    Q->rear = (Q->rear+1) % MAXSIZE;
    Q->elem[Q->rear] = x;

    if(Q->rear == Q->front) {
        Q->tag = 1;
    }
    return TRUE;
}
int DelCSQueue(CSQueue *Q, CSQueueElemType *x) {
    if((Q->front == Q->rear) && (Q->tag == 0)) {
        printf("EMPTY");
        return FALSE;
    }
    Q->front = (Q->front + 1) % MAXSIZE;
    *x = Q->elem[Q->front];

    if(Q->rear == Q->front) {
        Q->tag = 0;
    }
    return TRUE;
}
int main() {
    CSQueueElemType c;
    CSQueue Q;
    if(!InitCSQueue(&Q))
        return FALSE;
    while((c = getchar())!= '\n' );
        EntCSQueue(&Q, c);
    while(DelCSQueue(&Q,&c));
        putchar(c);

    return 0;
}
  • 写回答

1条回答

  • 小灸舞 2016-04-02 02:29
    关注

    while((c = getchar())!= '\n' );后面是不是多了个分号?

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog