CZYruobing 2018-11-10 04:50 采纳率: 0%
浏览 460

优先数调度算法,没写成功,请大神指导一下小菜鸟,救救孩子

我尝试写的代码如下,第一次写,求大神指导一下思路 机错误改正,谢谢你哦
#include
#include
typedef struct data
{
int hour;
int min;
}time;
typedef struct node
{
int id;//编号
char name[20];//名字
int good;//优先级
time arrive;//到达时间
int zx;//执行时间
time start;//开始时间
time finish;//完成时间
int zz;//周转时间
float zzxs;//带权周转系数
struct node* next;
}linknode;
typedef linknode *linklist;

void good(linklist head);
void print(linklist head);
linklist creatList();

/**********构建链表***************/
linklist creatList()
{
linklist head,r,s;
int num,i;
head=r=NULL;
printf("请输入进程数:");
scanf("%d",&num);
printf("\n请输入进程的:");
printf("\nID号\t名字\t优先级\t到达时间\t执行时间(分钟):\n");
for(i=0;i {
s=(linklist)malloc(sizeof(linknode));
if(head==NULL)
head=s;
else
r->next=s;
r=s;
scanf("%d\t%s\t%d\t%d:%d\t%d\n",&s->id,s->name,&s->good,&s->arrive.hour,&s->arrive.min,&s->zx);
}
if(s) s->next=NULL;
return head;
}
/*********优先数调度算法***********/
void good(linklist head)
{
linklist q,r;
r=head;
if(r->next==NULL || r->next->next==NULL) return ;
while(r->next)
{
q=r;
r=r->next;
if(q==head){
r->start.hour=r->arrive.hour;
r->start.min=r->arrive.min;
}
else{
while(q->good < r->good)
{
q->start.hour=r->finish.hour;
q->start.min=r->finish.min;
}
}
r->finish.min=r->start.min+r->zx;//完成时间=开始时间+执行时间
if(r->finish.min>=60){
r->finish.hour=r->start.hour+r->finish.min/60;
r->finish.min=r->finish.min%60;
}
else
r->finish.hour=r->start.hour;
r->zz=(r->finish.hour-r->arrive.hour)*60 + r->finish.min-r->arrive.min;//周转时间
r->zzxs=(float)r->zz/r->zx;//带权周转系数
}
}
/********打印函数*********/
void print(linklist head)
{
linklist p,q;
p=head;
q=p->next;
printf("模拟优先数调度过程输出结果:\n");
printf("ID号\t名字\t优先数\t到达时间\t执行时间(分钟)\t开始时间\t完成时间\t周转时间(分钟)带权周转时间(系数)\t");
while(q)
{
printf("%d\t%s\t%d\t%d:%d\t%d\t%d:%d\t%d:%d\t%d(分钟)\t%f\n",p->id,p->name,p->arrive.hour,p->arrive.min,p->zx,p->start.hour,p->start.min,p->finish.hour,p->finish.min,p->zz,p->zzxs);
p=p->next;
}
}
/********主函数*********/
int main()
{
linklist head;
head=creatList();//尾插法建立链表
good(head);
print(head);
}
图片说明

  • 写回答

1条回答

  • devmiao 2018-11-11 05:51
    关注
    评论

报告相同问题?

悬赏问题

  • ¥15 虚拟机打包apk出现错误
  • ¥30 最小化遗憾贪心算法上界
  • ¥15 用visual studi code完成html页面
  • ¥15 聚类分析或者python进行数据分析
  • ¥15 逻辑谓词和消解原理的运用
  • ¥15 三菱伺服电机按启动按钮有使能但不动作
  • ¥15 js,页面2返回页面1时定位进入的设备
  • ¥50 导入文件到网吧的电脑并且在重启之后不会被恢复
  • ¥15 (希望可以解决问题)ma和mb文件无法正常打开,打开后是空白,但是有正常内存占用,但可以在打开Maya应用程序后打开场景ma和mb格式。
  • ¥20 ML307A在使用AT命令连接EMQX平台的MQTT时被拒绝