队列(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+1)); Q->front = 0; Q->rear = 0; Q->maxSize = maxSize + 1; 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]; }