2 solo95 Solo95 于 2016.04.02 09:56 提问

要求循环队列不损失一个空间全部都能得到利用, 设置一个标志域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;
}

2个回答

qq423399099
qq423399099   Ds   Rxr 2016.04.02 10:29
已采纳

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

Solo95
Solo95 谢谢!
一年多之前 回复
Solo95
Solo95 对的,我把分好闪了之后正常了。可是编译器为什么不报错啊=.=
一年多之前 回复
CSDNXIAON
CSDNXIAON   2016.04.02 10:02

用Python写一个简单的单向链表(包含头尾指针)
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!