顺序队列
#include <stdio.h> #include <malloc.h> typedef enum { false, true } bool; typedef struct Queue{ int *pBase; int front; int rear; }QUEUE; void init(QUEUE *); bool en_queue(QUEUE *,int val); void traverse(QUEUE *); bool full_queue(QUEUE *); bool out_queue(QUEUE *,int *pVal); bool empty_queue(QUEUE *); int main(void){ QUEUE Q; int val; init(&Q); en_queue(&Q,1); en_queue(&Q,3); en_queue(&Q,2); en_queue(&Q,4); en_queue(&Q,5); en_queue(&Q,6); traverse(&Q); if(out_queue(&Q,&val)) { printf("出队成功,出队的元素是%d\n",val); } else{ printf("出队失败"); } traverse(&Q); return 0; } void init(QUEUE *pQ)//队列初始化 { pQ->pBase=(int *)malloc(sizeof(int) *6); pQ->front=0; pQ->rear=0; return ; } 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 *pQ){//遍历队列 int i=pQ->front; while(i!=pQ->rear) { printf("%d",pQ->pBase[i]); i=(i+1)%6; } printf("\n"); return ; } bool full_queue(QUEUE *pQ){//判断队列是否为满 if((pQ->rear+1)%6==pQ->front) { return true; } else { return false; } } bool empty_enque(QUEUE *pQ){//判断队列是否为空 if(pQ->rear==pQ->front) { return true; } else{ return false; } } bool out_queue(QUEUE *pQ,int *pVal)//出队 { if(empty_enque(pQ)) { return false; } else { *pVal=pQ->pBase[pQ->front]; pQ->front=(pQ->front+1)%6; return true; } }