最坏适应算法c语言源码,首次适应算法,最佳适应算法,最坏适应算法源代码
时间: 2023-07-10 17:40:04 浏览: 61
以下是最坏适应算法的C语言源码:
```c
#include <stdio.h>
#include <stdlib.h>
#define MAX_SIZE 128
int mem[MAX_SIZE]; // 内存空间
int n; // 内存大小
// 初始化内存空间
void init() {
for(int i = 0; i < MAX_SIZE; i++) {
mem[i] = 0;
}
}
// 输出内存分配情况
void printMem() {
for(int i = 0; i < n; i++) {
printf("%d ", mem[i]);
}
printf("\n");
}
// 最坏适应算法
int worstFit(int size) {
int maxHoleSize = -1; // 最大空闲块大小
int maxHoleIndex = -1; // 最大空闲块的起始位置
int startIndex = -1; // 当前查找的起始位置
int endIndex = -1; // 当前查找的结束位置
// 找到最大的空闲块
for(int i = 0; i < n; i++) {
if(mem[i] == 0) {
if(startIndex == -1) {
startIndex = i;
}
endIndex = i;
} else {
if(endIndex - startIndex + 1 >= size && endIndex - startIndex + 1 > maxHoleSize) {
maxHoleSize = endIndex - startIndex + 1;
maxHoleIndex = startIndex;
}
startIndex = -1;
endIndex = -1;
}
}
if(endIndex - startIndex + 1 >= size && endIndex - startIndex + 1 > maxHoleSize) {
maxHoleSize = endIndex - startIndex + 1;
maxHoleIndex = startIndex;
}
if(maxHoleIndex == -1) {
return -1; // 分配失败
} else {
for(int i = maxHoleIndex; i < maxHoleIndex + size; i++) {
mem[i] = size;
}
return maxHoleIndex; // 分配成功,返回起始位置
}
}
int main() {
printf("请输入内存大小:");
scanf("%d", &n);
init();
while(1) {
printf("请输入要分配的内存块大小:");
int size;
scanf("%d", &size);
int startIndex = worstFit(size);
if(startIndex == -1) {
printf("分配失败,没有足够的空间!\n");
printf("当前内存分配情况:");
printMem();
} else {
printf("分配成功,起始位置为:%d\n", startIndex);
printf("当前内存分配情况:");
printMem();
}
}
return 0;
}
```
以上是最坏适应算法的C语言源码,包含了初始化内存空间、输出内存分配情况、最坏适应算法等函数。你可以通过输入要分配的内存块大小来测试该算法的效果。