1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| void Init_queue(Queue *pq) { assert(pq!=NULL); pq->base = (ElemType*)malloc(sizeof(ElemType)*MAXSIZE); assert(pq->base !=NULL); pq->front = pq->tail = 0; }
bool Push(Queue *pq, ElemType val) { assert(pq!=NULL); if(IsFull(pq)) { return false; } pq->base[pa->tail] = val; pq->tail = (pq->tail + 1) % MAXSIZE; return true; }
bool Pop(Queue *pq, ElemType *pval) { if(IsEmpty(pq)) { return false; } *pval = pq->base[pq->front]; pq->front = (pq->front + 1) % MAXSIZE; return true; }
bool Head(Queue *pq, ElemType *pval) { if(IsEmpty(pq)) { return false; } *pval = pq->base[pq->front]; return true; }
int GetLength(Queue *pq) { return (pq->tail - pq-> front + MAXSIZE) % MAXSIZE; }
bool IsEmpty(Queue *pq) { return pq->front == pq->tail; }
bool IsFull(Queue *pq) { return (pq->tail+1)%MAXSIZE == pq->front; }
void Clear(Queue *pq) { pq->tail = pq->front = 0; }
void Destroy(Queue *pq) { free(pq->base); pq->base = NULL; }
void Show(Queue *pq) { int p = pq->front; while(p != pq->tail) { printf("%d ",pq->base[p]); p = (p+1) % MAXSIZE; } printf("\n"); }
|