顺序队列的基本操作

来源:互联网 发布:淘宝官方旗舰店和官网 编辑:程序博客网 时间:2024/04/27 23:15

typedef struct{    DATA data[QUEUEMAX];    int head;//定义队头     int tail;//定义队尾 } SeqQueue;//初始化 SeqQueue *SeqQueueInit(){    SeqQueue *q;    if(q = (SeqQueue *)malloc(sizeof(SeqQueue)));    {        q->head = 0;//设置队头         q->tail = 0;//设置队尾        return 0;        }    else    {        return NULL;    }} //释放队列void SeqQueueFree(SeqQueue *q){    if(q!=NULL)    {        free(q);    }} //检验队列是否为空int SeqQueueIsEmpty(SeqQueue *q){    return (q->head ==q->tail);}//队列是否已满int SeqQueueIsFull(SeqQueue *q){    return (q->tail==QUEUEMAX);}  //获取队列长度int SeqQueueLen(SeqQueue *q){    return (q->tail-q->head);}  //顺序队列的入队操作int SeqQueueIn(SeqQueue *q,DATA data){    if(q->tail==QUEUEMAX)    {        printf("队列已满");        return 0;    }    else    {        q->data[q->tail++]=data;        return 1;    }} //顺序队列的出队DATA *SeqQueueOut(SeqQueue *q){    if(q->head ==q->tail)    {        printf("队列已空");        return NULL;    }    else    {        return &(q->data[q->head++]);//取出队头元素后,将队头指针加一     }} //取出队头元素 DATA *SeqQueuePeek(SeqQueue *q){    if(q->head ==q->tail)    {        printf("队列已空");        return NULL;    }    else    {        return &(q->data[q->head]);    }}


0 0
原创粉丝点击