程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程解疑 >> 結構體-要求循環隊列不損失一個空間全部都能得到利用, 設置一個標志域tag , 區分頭尾指針相等的情況

結構體-要求循環隊列不損失一個空間全部都能得到利用, 設置一個標志域tag , 區分頭尾指針相等的情況

編輯:編程解疑
要求循環隊列不損失一個空間全部都能得到利用, 設置一個標志域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;
}

最佳回答:


while((c = getchar())!= '\n' );後面是不是多了個分號?

Solo95
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved