//簡單的佇列 #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]); } }