標籤:
#include<stdio.h>#include<malloc.h>#include<stdbool.h>typedef struct Queue{int * PBase;//指向數組第一個元素的指標int front;//隊列頭部元素下標int rear;//隊列尾部元素下標}QUEUE;/***初始化隊列,實現隊列的數組長度為6。**/void initQueue(QUEUE * pQ){ pQ->PBase=malloc(sizeof(int)*6); pQ->front=0; pQ->rear=0;}/**判斷隊列是否已滿*/bool isFull(QUEUE * pQ){if((pQ->rear+1)%6==pQ->front){ printf("隊列已滿,無法插入"); return true;}return false;}/**判斷隊列是否為空白*/bool isEmpty(QUEUE * pQ){ if(pQ->front==pQ->rear) { printf("隊列為空白"); return true; }return false; }/**入隊*/bool insert(QUEUE * pQ,int val){ if(isFull(pQ)) return false; 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++; } printf("\n");}/**出隊*/bool out_queue(QUEUE * pQ){ if(isEmpty(pQ)) return false; pQ->front=(pQ->front+1)%6;}int main(){QUEUE Q;initQueue(&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;}
涉及的知識點講解見上一篇文章:http://blog.csdn.net/davidluo001/article/details/46596553
關鍵:1.少用一個位置,用於區分隊列是空還是滿.
資料結構基礎(5)--C語言實現迴圈隊列--靜態