资源介绍
#include
#include
using namespace std;
typedef struct node
{
int data;
struct node *next;
}Node;
void main()
{
void fcfs(Node *,int,int);//声明先来先服务函数FCFS
void sstf(Node *,int,int);//声明最短寻道时间优先函数SSTF
void scan(Node *,int,int);//声明扫描函数SCAN
void print(Node *); //输出链表函数
Node *head,*p,*q; //建立一个链表
int it,c=0,f,s; //c为链表长度,f是开始的磁道号,s是选择哪个算法
head=(Node *)malloc(sizeof(Node));
head->next=NULL;
q=head;
cout<<" /**************磁盘调度算法***************/"<>it;
while(it!=0)
{
p=(Node *)malloc(sizeof(Node));
p->next=NULL;
p->data=it;
q->next=p;
q=p;
cin>>it;
c++;
}
cout<<"从几号磁道开始:";
cin>>f; //f为磁道号
print(head);
cout<<"链表长度为:"<>s;
while(s!=0)
{
switch(s)
{
case 1:cout<<"你选择了:先来先服务算法FCFS"<>s;
}
}
/***********************************************************/
void fcfs(Node *head,int c,int f)//先来先服务算法
{
void print(Node *);
Node *l;//*m,*n;
float num=0; //num为平均寻道长度
l=head->next;
for(int i=0;idata-f);
f=l->data;
l=l->next;
}
num=num/c;
cout<<"先来先服务的寻道顺序是:"<next=NULL;
m=l;
q=head;
p=head->next;
s=head;
r=head->next;
float num=0;
for(int i=0;idata);
for(int j=0;jnext;
q=q->next;
if(abs(f-p->data)data);
r=p;
s=q;
}
}
num+=abs(f-r->data);
f=r->data;
s->next=r->next;
r->next=NULL;
m->next=r;
m=r;
q=head;
p=head->next;
s=head;
r=head->next;
}
num=num/c;
cout<<"最短寻道时间优先顺序是:"<next=NULL;
s=r;
m=(Node *)malloc(sizeof(Node));//存放比开始磁道大的磁道
m->next=NULL;
n=m;
x=(Node *)malloc(sizeof(Node));
x->next=NULL;
y=x;
q=head;
p=head->next;
while(p->next!=NULL)
{
if(p->data-f>0)
{
q->next=p->next;
p->next=NULL;
n->next=p;
n=p;
p=q->next;
i++;
}
else
{
q->next=p->next;
p->next=NULL;
s->next=p;
s=p;
p=q->next;
j++;
}
}
if(p->data>=f)
{
n->next=p;
n=p;
i++;
}
else
{
s->next=p;
s=p;
j++;
}
q=r; //对比开始磁道小的磁道排序
p=r->next;
while(q->next->next!=NULL)
{
q=q->next;
p=q->next;
max=q->data;
while(p->next!=NULL)
{
if(p->data>max)
{
max=p->data;
p->data=q->data;
q->data=max;
max=q->data;
}
p=p->next;
}
if(p->data>max)
{
max=p->data;
p->data=q->data;
q->data=max;
max=q->data;
}
}
//print(r);
q=m;
p=m->next;
while(q->next->next!=NULL)
{
q=q->next;
p=q->next;
min=q->data;
while(p->next!=NULL)
{
if(p->datadata;
p->data=q->data;
q->data=min;
min=q->data;
}
p=p->next;
}
if(p->datadata;
p->data=q->data;
q->data=min;
min=q->data;
}
}
//print(m);
x=m;
p->next=r->next;
y=x->next;
while(y->next!=NULL)
{
num+=abs(f-y->data);
f=y->data;
y=y->next;
}
num+=abs(f-y->data);
num=num/c;
cout<<"扫描算法的顺序是:"<next;
cout<<"单链表显示:";
if(p==NULL)
{
cout<<"单链表为空:";
}
else if(p->next==NULL)
{
cout<data;
}
else
{
while(p->next!=NULL)
{
cout<data<<"->";
p=p->next;
}
cout<data<
- 上一篇: 操作系统课程设计之磁盘调度.rar
- 下一篇: 《操作系统》课程设计报告-磁盘调度系统