//顺序存储
typedef struct{
ElementType Data[MaxSize];
int rear;
int front;
}Queue;
//循环队列入队出队“+1取余法”
void AddQ(Queue *Q, ElementTyoe Data)
{
if ((Q->rear + 1) % MaxSize == Q->front){
printf("队列满");
reurn;
}
Q->rear = (Q->rear + 1) % MaxSize;
Q->Data[Q->rear] = Data;
}
//链式存储
typedef struct{
ElementType Data;
struct Node *Next;
}QNode;
typedef struct{
QNode *rear;
QNode *front;
}LinkQueue;
//不带头结点的链式存储出队操作
ElementType DeleteQ(LinkQueue *Q)
{
QNode *FirstCell;
ElementType FirstElement;
if(Q->front == NULL){
printf("队列空"); return ERROR;
}
FirstCell = Q->front;
if(Q->front == Q->rear){
Q->front = Q->rear = NULL;
}else{
Q->front = Q->front->Next;
}
FirstElem = FirstCell->Data;
free(FirstCell);
return FirstElem;
}