#include<malloc.h>
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#define OK 1
#define ERROR 0
typedef int Status; // Status是函数的类型,其值是函数结果状态代码,如OK等
typedef int QElemType;//队列元素类型
#define MAXQSIZE 10000 // 最大队列长度
typedef struct
{
QElemType *base; // 初始化的动态分配存储空间
int front; // 头指针,若队列不空,指向队列头元素
int rear; // 尾指针,若队列不空,指向队列尾元素的下一个位置
}Priority_Queue;
Status InitQueue(Priority_Queue &Q)
{
Q.base=(QElemType *)malloc( MAXQSIZE *sizeof(int)*2);
if(!Q.base)return ERROR;
Q.front=0;
Q.rear=2;
return 1;
// 构造一个空队列Q,该队列预定义大小为MAXQSIZE
}
int QueueLength(Priority_Queue Q)
{
int i;
i=(Q.rear-Q.front-2)/2;
if(i<0)
i+=MAXQSIZE;
return i;
// 返回队列的元素个数
}
Status EnQueue_Min(Priority_Queue &Q,QElemType e, int p)
{
int i,a,b;
if(!QueueLength(Q))
{
Q.base[Q.rear++]=e;
Q.base[Q.rear++]=p;
return 1;
}
if(Q.base[Q.rear]==Q.base[Q.front])
{
printf("队列已满");
return 0;
}
if(p>=Q.base[Q.rear-1])
{
Q.base[Q.rear++]=e;
Q.base[Q.rear++]=p;
return 1;
}
else
{