循环队列演示

来源:互联网 发布:lte无线网络优化 编辑:程序博客网 时间:2024/05/01 09:30
#include<stdio.h>#include<malloc.h>typedef struct Queue{    int * pBase;    int front;    int rear;}QUEUE;void init(QUEUE *);bool en_queue(QUEUE *, int val);void traverse_queue(QUEUE *);bool full_queue(QUEUE *);bool out_queue(QUEUE *, int *pVal);bool emput_queue(QUEUE *);int main(){    QUEUE Q;    int val;    init(&Q);    en_queue(&Q, 1);    en_queue(&Q, 2);    en_queue(&Q, 3);    en_queue(&Q, 4);    en_queue(&Q, 5);    en_queue(&Q, 6);    en_queue(&Q, 7);    en_queue(&Q, 8);    traverse_queue(&Q);    if( out_queue(&Q, &val) )        printf("出队%d成功\n",val);    else        printf("出队失败\n");    traverse_queue(&Q);    return 0;}void init(QUEUE *pQ){    pQ->pBase = (int *)malloc(sizeof(int) * 6);    pQ->front = 0;    pQ->rear = 0;}bool full_queue(QUEUE * pQ){    if( (pQ->rear + 1) % 6 == pQ->front )        return true;    else        return false;}bool en_queue(QUEUE * pQ, int val){    if( full_queue(pQ) )        return false;    else    {        pQ->pBase[pQ->rear] = val;        pQ->rear = (pQ->rear+1) % 6;        return true;    }}void traverse_queue(QUEUE * pQ){    int i = pQ->front;    while(i != pQ->rear)    {        printf("%d ",pQ->pBase[i]);        //输出的是以i为下标的元素        i = (i + 1) % 6;    }}bool emput_queue(QUEUE * pQ){    if( pQ->front == pQ->rear)        return true;    return false;}bool out_queue(QUEUE * pQ, int * pVal){    if( emput_queue(pQ) )        return false;    else{        *pVal = pQ->pBase[pQ->front];        pQ->front = (pQ->front+1) % 6;        return true;    }}

0 0
原创粉丝点击