首页 > 代码库 > 《数据结构与算法分析》学习笔记(五)——队ADT

《数据结构与算法分析》学习笔记(五)——队ADT

一、队的概念

       队列也是一种表,但是是一种受限的表,只允许从一端插入,另一端山粗的表。

二、队列的数组实现

#define QMAXSIZE 100typedef int Position;typedef int QElement;typedef struct queue{    QElement Els[QMAXSIZE];    Position head,tail;}Queue;void QCreate(Queue &Q){    Q.head = Q.tail = 0;}void Enqueue(QElement e,Queue &Q){    if((Q.tail + 1) % QMAXSIZE == Q.head)    {        printf("Queue Full");    }    else    {        Q.Els[Q.tail] = e;        Q.tail = (Q.tail + 1)% QMAXSIZE;    }}void Dequeue(QElement &e,Queue &Q){    if(Q.head == Q.tail)    {        printf("Queue Empty");    }    else    {        e = Q.Els[Q.head];        Q.head = (Q.head + 1) % QMAXSIZE;    }}QElement Head(Queue Q){    if(Q.tail == Q.head )    {        printf("Queue Empty");    }    else    {        return Q.Els[Q.head];    }}bool Empty(Queue Q){    return(Q.tail == Q.head );}bool Full(Queue Q){    return((Q.tail + 1) % QMAXSIZE == Q.head );}