/*
writed by hanpuwang
队列的声明及相关函数
*/
#include <stdio.h>
#define MaxSize 50
typedef int ElemType;
typedef struct{
ElemType data[MaxSize];
int front,rear;
}SqQueue;
void InitQueue(SqQueue &Q){
for(int i=0;i<MaxSize;i++)
Q.data[i] = 0;
Q.rear=Q.front=0;
}
bool QueueEmpty(SqQueue Q){
if(Q.rear==Q.front)
return true;
else
return false;
}
bool EnQueue(SqQueue&Q,ElemType x){
if(Q.rear == MaxSize)
return false;
else
Q.data[Q.rear++]=x;
return true;
}
bool DeQueue(SqQueue&Q,ElemType&x){
if(QueueEmpty(Q) == true)
return false;
else
x=Q.data[Q.front++];
return true;
}
bool GetHead(SqQueue Q,ElemType&x){
if(QueueEmpty(Q) == true)
return false;
else
x=Q.data[Q.front];
return true;
}
int main()
{
bool temp;
ElemType x;
SqQueue Q1,Q2,Q3;
InitQueue(Q1); //队列初始化
EnQueue(Q1,1); //1进入队列
temp = QueueEmpty(Q1);
printf("temp = %d\n",temp); //判断队列是否为空
EnQueue(Q1,2); //2进入队列
printf("Q1.front =%d\n",Q1.front); //输出队列指针位置
printf("Q1.rear =%d\n",Q1.rear);
DeQueue(Q1,x); //出队
printf("x = %d\n",x);
printf("Q1.front =%d\n",Q1.front); //再输出队列指针位置 没毛病
printf("Q1.rear =%d\n",Q1.rear);
while(1);
return 0;
}