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

📄 spqueuem.txt

📁 C++描述的数据结构内容,在C++builder的环境中运行,这是第一部分
💻 TXT
字号:
//SPQueue.h
//考虑优先级相同元素的先进先出
//问题的顺序优先级队列类定义
#include<fstream.h>
#define MaxSize 6
typedef struct Datatype
{int taskNo;
 int priority;
}datatype;
class SqPqueue
{private:
  datatype data[MaxSize];
  int count;
 public:
//构造函数
 SqPqueue(){count=0;}
//析构函数
 ~SqPqueue(){}
//清空队列
 void ClearPq(){count=0;}
// 判断队空
 int PQueueEmpty();
// 判断队满
 int PQueuefull();
//重载关系运算符小于<
 friend int operator <(datatype &,datatype &); 
// 队列的插入
 void InsertPQ(datatype);
// 队列的删除
 datatype DeQueue();
// 取队列的头元素
 datatype PQueuefront();
//求队列的元素个数
 int PQueueSize();
};
//顺序优先级队列的实现SPQueue.cpp
#include "SPQueue.h"
// 判断队空
int SqPqueue::PQueueEmpty() {
  return count==0;}
// 判断队满
int SqPqueue::PQueuefull(){
  return count==MaxSize;}
//重载关系运算符小于<
int operator <(datatype &b,datatype &c)
  {return b.priority<c.priority;}
// 队列的插入
void SqPqueue::InsertPQ(datatype x)
 {if(PQueuefull())
   {cerr<<"队列满.\n";exit(1);}
  data[count]=x;
   count++;
 }
// 队列的删除
datatype SqPqueue::DeQueue()
 {if(PQueueEmpty())
   {cerr<<"队列空.\n";exit(1);}
  datatype min=data[0];
  int minindex=0;
  for(int i=0;i<count;i++)
   if(data[i]<min)
    {min=data[i];minindex=i;}
  for(int i=minindex;i<count-1;i++)
   data[i]=data[i+1];
  count--;
  return min;
 }
// 取队列的头元素
datatype SqPqueue::PQueuefront()
 {if(PQueueEmpty())
   {cerr<<"队列空.\n";exit(1);}
  datatype min=data[0];
  for(int i=1;i<count;i++)
   if(data[i]<min)
    min=data[i];
  return min;
 }
//求队列的元素个数
int SqPqueue::PQueueSize()
{return count;}
// 顺序优先级队列的应用SqPQueuem.cpp
#include<iostream.h>
#include<iomanip.h>
#include "SPQueue.cpp"
void main()
{cout<<"SPQueuem.cpp运行结果:\n";
 SqPqueue MyQueue;
 datatype task;
 int i,m;
 cout<<"输入产生随机数的种子数m:";cin>>m;
 srand(m);
 cout<<"生成顺序优先级队列MyQueue:\n";
 for(i=0;i<MaxSize;i++)
 {task.taskNo=i+1;
  task.priority=rand()%10;
  MyQueue.InsertPQ(task);}
 cout<<"求顺序优先级队列MyQueue的长度:";
 cout<<MyQueue.PQueueSize()<<endl;
 cout<<"输出顺序优先级队列MyQueue:\n";
 cout<<"序号 任务号 优先级\n";
 i=1;
 while(!MyQueue.PQueueEmpty())
  {cout<<setw(2)<<i;
   task=MyQueue.DeQueue();
   cout<<setw(6)<<task.taskNo;
   cout<<setw(7)<<task.priority<<endl;
   i++;}
 cin.get();cin.get();}
SPQueuem.cpp运行结果:
输入产生随机数的种子数m:100
生成顺序优先级队列MyQueue:
求顺序优先级队列MyQueue的长度:6
输出顺序优先级队列MyQueue:
序号 任务号 优先级
 1     2      3
 2     5      3
 3     4      5
 4     6      5
 5     3      6
 6     1      8

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -