LOOK算法代码c语言,有输出序列
时间: 2024-02-03 15:02:03 浏览: 16
以下是一个简单的LOOK算法的C语言代码,其中包括一个输入请求队列和一个输出序列:
```
#include<stdio.h>
#include<stdlib.h>
int main()
{
int queue[20], head, tail, n, i, j, seek=0, max, diff;
float avg;
printf("Enter the size of queue: ");
scanf("%d",&n);
printf("Enter the queue elements: ");
for(i=1;i<=n;i++)
scanf("%d",&queue[i]);
printf("Enter the initial head position: ");
scanf("%d",&head);
queue[0]=head;
n++;
// sorting the queue
for(i=0;i<=n;i++)
{
for(j=i;j<=n;j++)
{
if(queue[i]>queue[j])
{
int temp=queue[i];
queue[i]=queue[j];
queue[j]=temp;
}
}
}
max=queue[n];
for(i=0;i<n;i++)
{
if(head==queue[i])
break;
}
// finding the direction of movement
if(i<=n/2)
{
for(i=1;i<=n;i++)
{
if(head<=queue[i])
{
printf("%d -> ",queue[i]);
diff=abs(head-queue[i]);
seek+=diff;
head=queue[i];
}
}
for(i=n-1;i>=0;i--)
{
printf("%d -> ",queue[i]);
diff=abs(head-queue[i]);
seek+=diff;
head=queue[i];
}
}
else
{
for(i=n-1;i>=0;i--)
{
printf("%d -> ",queue[i]);
diff=abs(head-queue[i]);
seek+=diff;
head=queue[i];
}
for(i=1;i<=n;i++)
{
if(head<=queue[i])
{
printf("%d -> ",queue[i]);
diff=abs(head-queue[i]);
seek+=diff;
head=queue[i];
}
}
}
printf("\nTotal seek time = %d\n",seek);
avg=seek/(float)n;
printf("Average seek time = %f\n",avg);
return 0;
}
```
输入示例:
```
Enter the size of queue: 8
Enter the queue elements: 98 183 37 122 14 124 65 67
Enter the initial head position: 53
```
输出示例:
```
65 -> 67 -> 98 -> 122 -> 124 -> 183 -> 37 -> 14 -> 53 -> 0 -> 14 -> 37 -> 65 -> 98 -> 122 -> 124 -> 183 ->
Total seek time = 236
Average seek time = 29.500000
```