using namespace std;
#define MaxSize 10
typedef struct{
ElemType data[MaxSize];
int front rear;
}SqQueue;
void testQueue(){
SqQueue Q;
}
void InitQueue(SqQueue &Q){
//初始化时,队头队尾指针指向0
Q.rear= Q.front=0;
}
Q.rear==Q.front
//判读为空
bool QueueEmpty(SqQueue Q){
if (Q.rear==Q.front)
return true;
else return false;
}
//入队操作
bool EnQueue(SqQueue &Q,ElemTypr x){
if (Q.rear==MaxSize)//判断队列是否已满
return false;
Q.data[Q.rear]=x;//将x插入队尾
Q.rear=Q.rear+1;//改变队尾指针的位置
}
Q.rear==MaxSize
,那么就会出现“上溢出”Q.rear= Q.front=0;
Q.frontr=(Q.front+1)%MaxSize;//改变队首指针的位置
Q.rear=(Q.rear+1)%MaxSize;//改变队尾指针的位置
(Q.rear+1)%MaxSize==Q.front
对队尾进行操作:Q.rear=(Q.rear+1)%MaxSize;//改变队尾指针的位置
bool EnQueue(SqQueue &Q,ElemTypr x){
if ((Q.rear+1)%MaxSize==Q.front)//判断队列是否已满
return false;
Q.data[Q.rear]=x;//将x插入队尾
Q.rear=(Q.rear+1)%MaxSize;//改变队尾指针的位置
}
(2) 类型中增设表示元素个数的数据成员,这样,队空就是Q.size==0
队满就是Q.size
=
=
==
==maxsize
(3) 类型中增设tag数据成员,tag=0时,就说嘛是因为删除导致的Q.rear= Q.front,则表示队空;tag=1时,就说嘛是因为插入导致的Q.rear= Q.front,则表示队满
bool DeQueue(SqQueue &Q,ElemTypr x){
if (Q.rear==Q.front)//判断队列是否为空
return false;
Q.data[Q.front]=x;//将x插入队尾
Q.front=(Q.front+1)%MaxSize;//改变队尾指针的位置
}