队列C语言实现

typedef struct QUEUE {
    ElementType *data;
    int front;
    int rear;
    int maxSize;
}*Queue;

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

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

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

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

ElementType Dequeue(Queue Q){
    if (IsEmptyQueue(Q)){
        return ERROR;
    }
    Q->front = (Q->front + 1) % Q->maxSize;
    return Q->data[Q->front];
}

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

猜你喜欢

转载自www.cnblogs.com/2018shawn/p/12821006.html