1. 程式人生 > 其它 >C迴圈佇列

C迴圈佇列

先放程式碼

點選檢視程式碼

#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;
}