顺序队

/*

顺序队

队空条件:front=rear;

队满条件:rear=maxsize-1

元素进队:rear++;data[rear]=e;

元素出队:front++;e=data[front]

初始时:front=rear=-1;


typedef struct
{
    ElementType data[maxsize];
    int front,rear;
}SqQueue;

/初始化队列/



void InitQueue(SqStack *&q)
{
    q=(SqQueue *)malloc(sizeof(SqQueue));
    q->front=q->rear=-1;
}

/销毁队列/



void DestroyQueue(SqQueue *&q)
{
    free(q);
}

/判断是否为空/


bool QueueEmpty(SqQueue *q)
{
    return (q->front==q->rear);
}

/进队/


bool enQueue(SqQueue *&q,ElemType e)
{
    if(q->rear==maxsize-1)
        return false;
    q->rear++;
    q->data[q->rear]=e;
    return true;
}

/出队/


bool deQueue(SqQueue *&q,ElemType &e)
{
    if(q->front==q->rear)
        return false;
    q->front++;
    e=q->data[q->front];
    return true;
}
Fork me on GitHub