队列(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];
}