循环队列

来源:互联网 发布:md5和国密算法 编辑:程序博客网 时间:2024/05/20 05:10
#include <stdio.h>#include <malloc.h>#define len 6struct queue{int * pbase;int front;int rear;};void init_queue(struct queue * pq){pq->pbase = (int *)malloc(sizeof(int) * len);pq->front = 0;pq->rear = 0;return;}bool is_full(struct queue * pq){if(pq->front == (pq->rear + 1)%len)return true;elsereturn false;} bool en_queue(struct queue * pq, int val)//入队 {if(is_full(pq)){printf("队列满,数组溢出\n");return false;} else{pq->pbase[pq->rear] = val;pq->rear = (pq->rear + 1)%len; return true;}}void traverse_queue(struct queue * pq){if(pq->front == pq->rear)printf("队列空\n");else{int i = pq->front;printf("循环队列数组为:"); while(i != pq->rear){printf("%d  ", pq->pbase[i]);i = (i + 1)%len;}printf("\n");}return;}bool is_empty(struct queue * pq){if(pq->rear == pq->front)return true;else return false;}bool out_queue(struct queue * pq, int * pval){if(is_empty(pq)){printf("出队列失败\n");return false;}else{*pval = pq->pbase[pq->front];pq->front = (pq->front + 1)%len;printf("出队列的数是%d\n", *pval);return true;}}int main(void){queue q;init_queue(&q);en_queue(&q,1);en_queue(&q,2);en_queue(&q,3);en_queue(&q,4);en_queue(&q,5);traverse_queue(&q);int val;out_queue(&q, &val);traverse_queue(&q);en_queue(&q,6);traverse_queue(&q);free(q.pbase);en_queue(&q,7);return 0;}

0 0
原创粉丝点击