github代码自取采用最先适应法、最佳适应法、最坏适应法分配主存空间
#include <stdio.h>
#include <stdlib.h>
#define MAX_MEM_SIZE 1000
typedef struct FreeBlock
{
int start;
int size;
struct FreeBlock *next;
} FreeBlock;
FreeBlock *free_list = NULL;
// 初始化空闲块链表
void init_free_list(int start, int size)
{
FreeBlock *fb = malloc(sizeof(FreeBlock));
fb->start = start;
fb->size = size;
fb->next = NULL;
free_list = fb;
}
// 插入空闲块
void insert_free_block(FreeBlock *fb)
{
FreeBlock *cur = free_list, *prev = NULL;
while (cur != NULL && cur->start < fb->start)
{
prev = cur;
cur = cur->next;
}
if (prev == NULL)
{
fb->next = free_list;
free_list = fb;
}
else
{
prev->next = fb;
fb->next = cur;
}
}
// 删除空闲块
void delete_free_block(FreeBlock *fb)
{
FreeBlock *cur = free_list, *prev = NULL;
while (cur != NULL