队列(Queue)顺序存储C语言实现

 队列(Queue))顺序存储C语言实现

#define ERROR -1

typedef int ElemType;
typedef int Position;
typedef struct QNode* Queue;

typedef struct QNode{
    ElemType*data;
    Position front;
    Position rear;
    int maxSize;
};

Queue CreateQueue(int maxSize){
    Queue Q = (Queue)malloc(sizeof(struct QNode));
    Q->data = (ElemType*)malloc(sizeof(ElemType)*maxSize);
    Q->front = 0;
    Q->rear = 0;
    Q->maxSize = maxSize;
    return Q;
}

void DestroyQueue(Queue Q) {
    if (Q) {
        if(Q->data){
            free(Q->data);
        }
        free(Q);
    }
}

int IsFullQueue(Queue Q){
    return (Q->front == (Q->rear + 1) % Q->maxSize);
}

void Enqueue(Queue Q, ElemType item) {
    if (IsFullQueue(Q)) {
        return;
    }
    Q->rear = (Q->rear + 1) % Q->maxSize;
    Q->data[Q->rear] = item;
} 

int IsEmptyQueue(Queue Q){
    return ( Q->front == Q->rear );
}

ElemType Dequeue(Queue Q){
    if (IsEmptyQueue(Q)){
        return ERROR;
    }
    Q->front = (Q->front + 1) % Q->maxSize;
    return Q->data[Q->front];
}
   
原文地址:https://www.cnblogs.com/2018shawn/p/12821006.html