#include<stdio.h>
typedef int qitatype;
typedef struct{
int youxianji;
qitatype qita;
}datetype;
typedef struct{
datetype dui[100];
int size;
}zjr;
void chushihua(zjr *q)
{
q->size=0;
}
int kongif(zjr q)
{
if(q.size<=0)
return 0;
else
return 1;
}
int duiadd(zjr* q,datetype x)
{
if(q->size>=100)
{
printf("队列已经满了!");
return 0;
}
else
{
q->dui[q->size]=x;
q->size++;
return 1;
}
}
int shan(zjr* q,datetype* x)
{
datetype min;
int minindex,i;
if(q->size<=0)
{
printf("队列已经空了!");
return 0;
}
else
{
min=q->dui[0];
minindex=0;
for(i=1;i<q->size;i++)
if(q->dui[i].youxianji<min.youxianji)
{
min=q->dui[i];
minindex=i;
}
*x=q->dui[minindex];
for(i=minindex+1;i<q->size;i++)
{
q->dui[i-1]=q->dui[i];
}
q->size--;
return 1;
}
}
int getdui(zjr* q,datetype *x)
{
datetype min;
int minindex,i;
if(q->size<=0)
{
printf("队列已经空了! ");
return 0;
}
else
{
min=q->dui[0];
minindex=0;
for(i=1;i<q->size;i++)
{
if(q->dui[i].youxianji<min.youxianji)
{
min=q->dui[i];
minindex=i;
}
*x=q->dui[minindex];
return 0;
}
}
}
int main()
{
zjr q;
datetype task;
int i;
chushihua(&q);
for(i=0;i<2;i++)
{
scanf("%d %d",&task.qita,&task.youxianji);
duiadd(&q,task);
}
i=1;
printf("序号 任务号 优先级\n");
while(kongif(q))
{
shan(&q,&task);
printf("%d ",i);
printf("%d ",task.qita);
printf("%d \n",task.youxianji);
i++;
}
}
C语言·优先级队列
最新推荐文章于 2023-07-11 23:24:35 发布