📄 pqueue.h
字号:
#include<iostream.h>
#include<stdlib.h>
#include"Event.h"
//优先队列数组的元素
const int MaxPQSize=50;
typedef Event DataType;
class PQueue
{
private:
//存放优先队列的数组及队列中元素个数的计算器
int count;
DataType pqlist[MaxPQSize];
public:
//构造函数
PQueue(void);
//修改优先队列的操作
void PQInsert(const DataType& item);//读入一个DataType类型的元素并将其插入队尾
DataType PQDelete(void);//从队首中删除元素并返回其值
void ClearPQ(void);//删除所有元素,并恢复到初始情况
//检测优先级队列状态的操作
int PQEmpty(void) const;//检测队列是否为空
int PQFull(void) const;//检测队列是否已满
int PQLength(void) const;//检测表中元素的个数
};
PQueue::PQueue(void)
{
count=0;
}
//将元数插入优先级队列
void PQueue::PQInsert(const DataType& item)
{
//若队列已满,则退出程序
if(count==MaxPQSize)
{
cerr<<"Priority queue overflow!"<<endl;
exit(1);
}
//将元素置于队尾并使count加1
pqlist[count]=item;
count++;
}
//从优先级队列中删除元素并返回其值
DataType PQueue::PQDelete(void)
{
DataType min;
int i,minindex=0;
if(count>0)
{
//在pqlist中找到最小值及其下标
min=pqlist[0];//假定pqlist(0)为最小值
//顺序访问其它元素,修改最小值及下标
for(i=1;i<count;i++)
if(pqlist[i].GetCustomerID()<min.GetCustomerID())
{
//新的最小值为pqlist[i],相应下标为i
min=pqlist[i];
minindex=i;
}
//将尾元素移入最小元素处并将Count减为1
pqlist[minindex]=pqlist[count-1];
count--;
}
//若qlist为空,则退出程序
else
{
cerr<<"Deleting from an empty pqueue!"<<endl;
exit(1);
}
//返回最小值
return min;
}
void PQueue::ClearPQ(void)
{
PQDelete();
}
int PQueue::PQEmpty(void)const
{
if(count==0)
return 1;
else
return 0;
}
int PQueue::PQFull(void)const
{
if(count==50)
return 1;
else
return 0;
}
int PQueue::PQLength(void)const
{
return count;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -