数据结构之队列
循环队列举例:
#include"stdio.h" #include"malloc.h" typedef struct Queue { int front; int rear; int *pBase; }QUEUE,*PQUEUE; void init(PQUEUE Q); void add(PQUEUE Q,int val); void show(PQUEUE Q); bool out(PQUEUE Q,int* val); bool full(PQUEUE Q); bool empty(PQUEUE Q); int main(void) { QUEUE Q; int val; init(&Q); /* add(&Q,1); add(&Q,2); add(&Q,3); */ show(&Q); if(out(&Q,&val)) { printf("出队成功值是:%d\n",val); } else { printf("出队失败"); } show(&Q); return 0; } void init(PQUEUE Q) { Q->pBase=(int*)malloc(sizeof(int)*6); Q->front=Q->rear=0; } void add(PQUEUE Q,int val) { if(full(Q)) { } else { Q->pBase[Q->rear]=val; Q->rear=(Q->rear+1)%6; } } void show(PQUEUE Q) { int i=Q->front; while(i!=Q->rear) { printf("%d",Q->pBase[i]); i=(i+1)%6; } } bool out(PQUEUE Q,int* val) { if(empty(Q)) { return false; } else { *val=Q->pBase[Q->front]; Q->front=(Q->front+1)%6; } } bool full(PQUEUE Q) { if((Q->rear+1)%6==Q->front) { return true; } else { return false; } } bool empty(PQUEUE Q) { if(Q->front==Q->rear) { return true; } else { return false; } }