//队列工具 template struct SqQueue // 顺序队类 { BTNode
* *base; // 队列首址 int front; // 队头指针 int rear; // 队尾指针 int queuesize; // 队容量 }; //【算法3.14】 初始化队列 template void InitQueue(SqQueue
&Q, int m) { Q.base=new BTNode
*[m]; // 申请队列空间 if(Q.base==NULL) // 申请空间失败 { cout<<"未创建成功!"; exit (1); // 退出 } Q.front=Q.rear=0; // 设置队列属性 Q.queuesize=m; } //算法3.15】 销毁列列 template void DestroyQueue(SqQueue
&Q) { delete [] Q.base; // 释放队列空间 Q.front=Q.rear=0; // 设置队列属性 Q.queuesize=0; } //【算法3.16】 入队 template bool EnQueue(SqQueue
&Q,BTNode
* e) { if((Q.rear+1)%Q.queuesize==Q.front) // 队满 return false; // 返回false Q.base[Q.rear]=e; // 出队 Q.rear=(Q.rear+1)% Q.queuesize; // 修改队列属性 return true; // 返回true } //【算法3.17】 出队 template bool DeQueue(SqQueue
&Q,BTNode
* &e) { if(Q.front==Q.rear) // 队空 return false; e=Q.base[Q.front]; Q.front=(Q.front+1)%Q.queuesize; return true; // 删除成功,返回true } // 测队空 template bool QueueEmpty(SqQueue
Q) { if(Q.front==Q.rear) // 队空 return true; // 返回true else // 队不空 return false; // 返回false }