#include <stdio.h> #include <malloc.h> #include <stdbool.h>typedef struct queue{int * pbase;// Pointer to array first element int front;//queue header element subscript int rear;//Queue trailing element subscript}queue;/*** Initialize queue, implementation queue array length is 6. **/void initqueue (QUEUE * PQ) {pq->pbase=malloc (sizeof (int) *6); pq->front=0; pq->rear=0;} /** determines whether the queue is full */bool isfull (queue * PQ) {if ((pq->rear+1)%6==pq->front) {printf ("queue is full, unable to insert"); return true;} return false;} /** determines whether the queue is empty */bool isEmpty (Queue * PQ) {if (pq->front==pq->rear) {printf ("queue is empty"); return true; }return false; }/** Queue */bool Insert (QUEUE * Pq,int val) {if (Isfull (PQ)) return false; pq->pbase[pq->rear]=val; Pq->rear= (pq->rear+1)%6; return true;} /** Traversal queue */void Traverse (Queue * pQ) {int i=pq->front; while (i!=pq->rear) {printf ("%d", pq->pbase[i]); i++; } printf ("\ n");} /** out Team */bool out_queue (Queue * PQ) {if (IsEmpty (PQ)) return false; Pq->front= (pq->front+1)%6;} int main () {QUEUE q;initqueue (&Amp Q); insert (&q,1); insert (&q,2); insert (&q,3); insert (&q,4); insert (&q,5); insert (&q,6); Traverse (&q); Out_queue (&q); traverse (&q); return 0;}
Refer to the knowledge Point explained in previous article: http://blog.csdn.net/davidluo001/article/details/46596553
Key: 1. Use less than one location to distinguish whether the queue is empty or full.
Data Structure Basics (5)--c language Implementation Loop Queue--static