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

📄 sjp.txt

📁 时间片用C语言编写的算法和短作业优先算法两种,也可根据各自的需要进行修改
💻 TXT
字号:
1:时间片   
  #include   "stdafx.h"   
  #include"iostream.h"   
  const   k=10;   
  struct   node   {   
  int   data1,data2,data3;   
  node   *next;   
  };   
  node   *front=NULL,*rear=NULL;   
  static   int   n=0,y=0;   
  class   timesec{   
  public:   
  void   push(int,int);   
  void   pop();   
  };   
  void   timesec::push(int   d1,int   d2)   
  {   
  node   *p=new   node;   
  p->next=NULL;   
  p->data1=d1;   
  p->data2=d2;   
  p->data3=0;   
  if(front==NULL)   
  {front=p,rear=p;}   
  else     
  {   
  rear->next=p;   
  rear=p;   
  rear->next=front;   
  }   
  ++n;   
  }   
  void   timesec::pop()   
  {   
  int   i=0,j=0,m=0,data5;   
  while(n!=0)   
  {   
  for(j=0;j<k/n;j++);   
  if(j>=k/n)j=k/n;   
  if(j==k/n)   
  {   
  front->data3+=k/n;   
  if(front->data3>front->data2)   
  front->data3=front->data2;   
  if(front->data3==front->data2)   
  {   
  node   *q=new   node;   
  q=front;   
                                                                  data5=y-front->data1+front->data2;   
  y+=front->data2;   
  front=front->next;   
  rear->next=q->next;   
  delete   q;   
  --n;   
  cout<<data5<<endl;   
  }   
  front=front->next;   
  rear=rear->next;   
  j=0;   
  i++;   
  }   
  if(i==n)   
  {         
  m++;   
  //cout<<"第"<<m<<"次循环"<<endl;   
  i=0;   
  }   
  }   
  }   
  void   main()   
  {   
  int   i,k;   
  timesec   p;   
  cin>>k;   
  int   x1,x2;   
  for(i=0;i<k;i++)   
  {   
  cin>>x1>>x2;   
  p.push(x1,x2);   
  }   
  p.pop();   
  }   
    
    
  2:短作业优先   
  include   "stdafx.h"   
  #include"iostream.h"   
  const   m=100;   
  struct   node{   
  int   data1;//到达时间;   
  int   data2;//完成时间;   
  int   length;//作业长度;   
  }a[m];   
  int   i=0;   
  void   push(int   d1,int   d2,int   l)   
  {   
    
  a[i].data1=d1;   
  a[i].data2=d2;   
  a[i].length=l;   
  i++;   
  }   
  int   pop(int   j)   
  {   
  int   y;   
  if(j>=m)   
  return   0;   
  y=a[j].data2-a[j].data1;   
  a[j+1].data2+=a[j].data2;   
  cout<<y<<endl;   
  return   1;   
  }   
  void   f()   
  {   
  int   j,k;node   t;   
  for(j=0;j<i-1;j++)   
  for(k=0;k<i-j-1;k++)   
  if(a[k].length>a[k+1].length)   
  {   
  t=a[k];   
  a[k]=a[k+1];   
  a[k+1]=t;   
  }   
  }   
  void   main()   
  {   
  int   x,y,d1,d2,l1,k;   
  cout<<"输入进程个数:";   
  cin>>k;   
  if(k<m)   
  for(x=0;x<k;x++)   
  {   
  cin>>d1>>d2>>l1;   
  push(d1,d2,l1);   
  }   
  f();   
  for(y=0;y<k;y++)   
  pop(y);   
  }

⌨️ 快捷键说明

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