⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pqueue.h

📁 用C++实现银行的模拟
💻 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 + -