C迴圈佇列
阿新 • • 發佈:2021-12-11
先放程式碼
點選檢視程式碼
#include <stdio.h> #define Maxsize 50 #define true 1 #define false 0 typedef int Elemtype; typedef struct{ Elemtype data[Maxsize]; int front,rear; //front指向第一個元素(隊頭),rear指向隊尾的後面 }SqQueue; //初始化 void InitQueue(SqQueue *Q){ Q->rear = Q->front = 0; //可以拿來判空 } //判隊空 int isEmpty(SqQueue Q){ if(Q.rear == Q.front) return true; else return false; } //入隊 //隊不滿時,先將值送到隊尾元素,再將隊尾指標+1 int EnQueue(SqQueue *Q,Elemtype x){ if((Q->rear + 1) % Maxsize == Q->front) //隊滿 return false; Q->data[Q->rear]=x; Q->rear=(Q->rear+1)%Maxsize; return true; } //出隊 //隊不空時,先取隊頭元素,再將隊頭指標+1 int DeQueue(SqQueue *Q){ int x; if(Q->rear == Q->front) return false; x = Q->data[Q->front]; Q->front = (Q->front+1) % Maxsize; return x; } void Q_p(SqQueue Q){ int q = Q.front; while(Q.front!=Q.rear) printf("%d ",Q.data[Q.front++]); printf("\n"); Q.front = q; } int main() { SqQueue Q; InitQueue(&Q); EnQueue(&Q,0);EnQueue(&Q,1);EnQueue(&Q,2);Q_p(Q); DeQueue(&Q);Q_p(Q); return 0; }