//簡單的隊列 #include<stdio.h> #include<stdlib.h> #define datatype int #define N 10 //定義隊列結構體 struct queue{ int front;//隊頭 int endline;//隊尾 datatype data[N];//數據 }; typedef struct queue Queue; Queue myQueue = { 0, 0, { 0 } }; //初始化隊列 void initQueue(Queue * p); //入隊 void enQueue(Queue *pque, datatype data); //出隊 void deQueue(Queue *pque); //遍歷隊列 void printfQueue(Queue *pque); //數組隊列只能使用一次,使用之后必須初始化后才可以繼續使用 void main(){ Queue *pque = (Queue *)malloc(sizeof(Queue)); initQueue(pque); //插入隊列 enQueue(pque,1); enQueue(pque,2); enQueue(pque,8); enQueue(pque,3); enQueue(pque,7); //打印隊列 printfQueue(pque); //出隊 deQueue(pque); //打印隊列 printfQueue(pque); deQueue(pque); //打印隊列 printfQueue(pque); system("pause"); } //初始化隊列 void initQueue(Queue *pque){ pque->front = pque->endline = 0;//清空隊列 } //入隊 void enQueue(Queue *pque,datatype data){ //判斷隊列是否溢出 if (pque->endline<N) { //判斷隊列是否為空 if (pque->front == pque->endline)//隊頭和隊尾重合表明沒有元素 { //初始化隊列 initQueue(pque); } pque->data[pque->endline] = data; pque->endline += 1; } else{ return; } } //出隊 void deQueue(Queue *pque){ //判斷隊列是否為空 if (pque->front == pque->endline) { //隊列為空 return; } else{ //直接彈出最后一個 printf("彈出的元素是%d\n", pque->data[pque->front]); pque->front+= 1; } } //遍歷隊列 void printfQueue(Queue *pque){ for (int i = pque->front; i < pque->endline; i++) { printf("%d\n", pque->data[i]); } }