数据结构之循环数组实现队列

来源:互联网 发布:淘宝店铺招牌模板 编辑:程序博客网 时间:2024/06/14 08:27
#include<stdio.h>#include<malloc.h>typedef struct Queue{int *pBase;int font;int rear;}QUEUE;void init(QUEUE * pQ);bool in_Queue(QUEUE *pQ,int val);bool is_full(QUEUE *pQ);void show(QUEUE * pQ);bool out_Queue(QUEUE *pQ,int val);bool is_empty(QUEUE * pQ);void main(){QUEUE Q;int val;init(&Q);in_Queue(&Q,1);in_Queue(&Q,2);in_Queue(&Q,3);in_Queue(&Q,4);in_Queue(&Q,5);in_Queue(&Q,6);in_Queue(&Q,7);show(&Q);out_Queue(&Q,val);out_Queue(&Q,val);out_Queue(&Q,val);out_Queue(&Q,val);out_Queue(&Q,val);out_Queue(&Q,val);out_Queue(&Q,val);out_Queue(&Q,val);show(&Q);}void init(QUEUE * pQ){pQ->pBase = (int *)malloc(sizeof(int)*6);pQ->font = 0;pQ->rear = 0;}bool in_Queue(QUEUE *pQ,int val){if(is_full(pQ)){return false;}pQ->pBase[pQ->rear] = val;pQ->rear = (pQ->rear+1) % 6;return true;}void show(QUEUE * pQ){int i = pQ->font;while(i != pQ->rear){printf("%d ",pQ->pBase[i]);i = (i+1) %6;}printf("\n");}bool is_full(QUEUE *pQ){if((pQ->rear+1)%6 == pQ->font)return true;elsereturn false;}bool out_Queue(QUEUE *pQ,int val){if(is_empty(pQ)){printf("队列为空\n");return false;}val = pQ->pBase[pQ->font];pQ->font = (pQ->font +1) % 6;printf("出队列的元素为:%d\n", val);return true;}bool is_empty(QUEUE * pQ){if(pQ->font == pQ->rear)return true;elsereturn false;}

0 0
原创粉丝点击