#define MALLOC(dataType, n) malloc( sizeof(dataType)*n )
#define SCANF(pVal, val) scanf("%d", &val)
#define FREE(Point) free(Point)
typedef struct Queue{
int * pBase;
int front;
int rear;
}QUEUE_T, * PQUEUE_T;
void Init_Queue();
bool Is_Full(PQUEUE_T pQueue);
bool En_Queue(PQUEUE_T pQueue, int val);
bool Out_Queue(PQUEUE_T pQueue, int *val);
void Traverse_Queue(PQUEUE_T pQueue);
int main(void)
{
QUEUE_T queue;
int val;
Init_Queue(&queue);
En_Queue(&queue, 33);
En_Queue(&queue, -3);
//En_Queue(&queue, 125);
En_Queue(&queue, 6);
//En_Queue(&queue, -60);
Traverse_Queue(&queue);
if(Out_Queue(&queue, &val)){
printf("Out Queue is Success!, val = %d\n", val);
}
if(Out_Queue(&queue, &val)){
printf("Out Queue is Success!, val = %d\n", val);
}
if(Out_Queue(&queue, &val)){
printf("Out Queue is Success!, val = %d\n", val);
}
if(Out_Queue(&queue, &val)){
printf("Out Queue is Success!, val = %d\n", val);
}
Traverse_Queue(&queue);
return 0;
}
void Init_Queue(PQUEUE_T pQueue)
{
pQueue->pBase = (int *)MALLOC(int, 6);
if(NULL == pQueue->pBase){
printf("Queue Create Fail!\n");
}else{
pQueue->front = 0;
pQueue->rear = 0;
}
}
bool Is_Full(PQUEUE_T pQueue)
{
if((pQueue->rear+1)%6 == pQueue->front)
return true;
else
return false;
}
bool En_Queue(PQUEUE_T pQueue, int val)
{
if( Is_Full(pQueue) ){
printf("En Queue is Fail!\n");
return false;
}else{
pQueue->pBase[pQueue->rear] = val;
pQueue->rear = (pQueue->rear+1) % 6;
return true;
}
}
bool Is_Empty(PQUEUE_T pQueue)
{
if(pQueue->front == pQueue->rear)
return true;
else
return false;
}
boolean Out_Queue(PQUEUE_T pQueue, int *val)
{
if( Is_Empty(pQueue) ){
printf("Out Queue is Fail!\n");
return false;
}else{
(*val) = pQueue->pBase[pQueue->front];
pQueue->front = (pQueue->front+1) % 6;
return true;
}
}
void Traverse_Queue(PQUEUE_T pQueue)
{
int i = pQueue->front;
while(i != pQueue->rear){
printf(" %d", pQueue->pBase[i]);
i = (i+1)%6;
}
printf("\n");
return;
}
循环队列(内核为数组存储).c
最新推荐文章于 2023-01-30 22:37:55 发布