我這個算法不知道為什麼不能初始化,可能犯了很蠢的錯誤,求大神解答!!!
/*循環隊列_使用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;
}
while((c = getchar())!= '\n' );後面是不是多了個分號?