循环队列

来源:互联网 发布:化妆品成分查询软件 编辑:程序博客网 时间:2024/05/01 13:16
#include<stdio.h>#include<stdlib.h>#include<stdbool.h>#define size 10typedef int datatype;typedef struct{datatype data[10];int front,rear;}quenue_list;void init(quenue_list **s){(*s)->front=size-1;(*s)->rear=(*s)->front;}bool is_full(quenue_list *ptos){if(ptos->front == (ptos->rear+1)%size)return true;else return false;}bool push(quenue_list *ptos,datatype x){if(is_full(ptos))return false;ptos->rear = (ptos->rear+1)%size;ptos->data[ptos->rear] = x;return true;}bool is_empty(quenue_list *ptos){if(ptos->front == ptos->rear)return true;else return false;}bool pop(quenue_list *ptos,datatype *x){if(is_empty(ptos)){printf("the sequen is empty\n");return false;}*x=ptos->data[(ptos->front+1)%size];ptos->front=(ptos->front+1)%size;return true;}void show(quenue_list *ptos){int i;i=(ptos->front+1)%size;while(i <= ptos->rear){printf("%d ",ptos->data[i%size]);i++;}printf("\n");}int main(void){quenue_list s;quenue_list *sq=&s;init(&sq);int tmp;int ret;int p;puts("please input the data to enter the ");while(1){ret = scanf("%d",&tmp);if(ret == 1){if(!push(sq,tmp))break;show(sq);}else{if(!pop(sq,&p))break;show(sq);}while(getchar() != '\n');}return 0;}


原创粉丝点击