优先队列的数组实现

来源:互联网 发布:python写界面 编辑:程序博客网 时间:2024/04/25 10:12
#include <iostream>using namespace std;const int Size=50;typedef struct DataType{int num;int priority;//优先级}datatype;class P_Queue{private:datatype data[Size];int count;//计数器  public: P_Queue(){ count=0;}    int empty() ;int full() ;friend int operator <(datatype & ,datatype &);void insertPQ(datatype);//队列的插入     datatype deQueue();     //队列的删除                 datatype PQueuefront();                  int PQueuesize();   void print(datatype x)   {   cout<<x.num<<" "<<x.priority<<endl;   }   };int P_Queue:: empty() {return count==0 ;}int P_Queue:: full() {return count==Size;} int operator <(datatype &b ,datatype &c) { return b.priority<c.priority;} void P_Queue::insertPQ(datatype x) { if(full()){cout<<"队列已满!"<<endl;exit(1);} data[count]=x; count++;} datatype P_Queue::deQueue() { if(empty()){cout<<"队列空!"<<endl;exit(1);} datatype min=data[0]; int minindex=0;//minidex作为最高优先级的下标 for(int i=0;i<count;i++) if(data[i]<min) { min=data[i];minindex=i;}data[minindex]=data[count-1];//把最后一个元素放在要删除元素的位置count--;return min; } datatype P_Queue:: PQueuefront() {   if(empty()){cout<<"队列空!"<<endl;exit(1);} datatype min=data[0]; for(int i=0;i<count;i++) if(data[i]<min) { min=data[i];}return min; } int P_Queue:: PQueuesize(){ return count;}void main(){    P_Queue  *p;p=new P_Queue;    datatype x;int t=-1;   cout<<"选项: 1.插入  2.删除 3.队列头元素 4.队列大小"<<endl;while(1){cout<<"输入选项:";cin>>t;if(t==1){cout<<"输入元素:";cin>>x.num >>x.priority;   p->insertPQ(x); }else if(t==2){  p->deQueue();  cout<<"删除成功!"<<endl;}else if(t==3){  p->print(p->PQueuefront());}else if(t==4){cout<<p->PQueuesize()<<endl;}else cout<<"请重新输入:"<<endl;}}

原创粉丝点击