0、节点结构体定义
typedef struct SqQueue{
int *base;
int front, rear;
} SqQueue;
1、初始化
bool InitQueue(SqQueue &Q)
{
Q.base = new int[Maxsize];
if(!Q.base){
return false;
}
Q.front = Q.rear = 0;
return true;
}
2、入队
bool EnQueue(SqQueue &Q, int e)
{
if((Q.rear+1)%Maxsize == Q.front){
return false;
}
Q.base[Q.rear] = e;
Q.rear =(Q.rear+1)%Maxsize;
}
3、出队
bool DeQueue(SqQueue &Q, int &e)
{
if(Q.front == Q.rear){
return false;
}
e = Q.base[Q.front];
Q.front = (Q.front+1)%Maxsize;
}
4、取队头
int GetHead(SqQueue Q)
{
if(Q.front != Q.rear){
return Q.base[Q.front];
}else{
return -1;
}
}
5、求队列长度
int QueueLength(SqQueue Q)
{
return (Q.rear-Q.front+Maxsize)%Maxsize;
}
6、释放内存
void QueueRelese(SqQueue &Q)
{
delete[] Q.base;
}