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

一、队的概念

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

二、队列的数组实现

#define QMAXSIZE 100



typedef 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 );

}

你可能感兴趣的:(数据结构与算法)