资源描述:
《【linux课程设计】可变分区最佳适应算法源代码》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、更多课程设计、论文、毕业设计请访问:http://www.docin.com/mydoc-5887523-1.html&folderId=72986#include#include#include#include//采用最佳适应算法来实现可变分区的管理//数据结构的设计typedefstructnode{charname[10];//作业的名字intstart,length;//作业的起始地址和长度structnode*next;//链表结构体}*table;//为合并空闲区表而临时增加的一个数据结构//将空闲表
2、中的数据项都存在这个结构的数组中//然对这个数组进行排序,最后得到从小到大的空闲区表structpnode{intstart,length;//起始地址和长度};intmenu()//选择菜单{intn;for(;;){printf("________________________");printf("****************
3、最佳适应算法进行可变分区
4、***************");printf("*
5、*
6、*
7、*
8、*
9、*
10、*
11、*
12、*
13、*
14、*
15、*
16、*
17、*
18、*
19、*
20、*
21、*
22、*
23、*
24、*
25、*
26、*
27、*
28、*
29、*
30、*
31、*
32、*");printf("*1输入作业数及大小(单位KB
33、)*");printf("*2查看内存使用情况*");printf("*3释放内存*");printf("*4查看空闲区表的情况*");printf("*5退出程序*");printf("*
34、*
35、*
36、*
37、*
38、*
39、*
40、*
41、*
42、请输入您的选择*
43、*
44、*
45、*
46、*
47、*
48、*
49、*
50、*
51、*
52、*
53、*
54、*");scanf("%d",&n);while(n<1
55、
56、n>5){printf("输入有误请重新输入");scanf("%d",&n);}returnn;}}//要建立两张表,一张是进程占用分区状况表,一张是空闲区表tablep;//占用表更多课程设计、论文、毕业设计请访问:h
57、ttp://www.docin.com/mydoc-5887523-1.html&folderId=72986tablef;//空闲表voidinit()//两张表的初始化{p=(table)malloc(sizeof(structnode));//头结点p->next=NULL;//初始化是,占用表为空f=(table)malloc(sizeof(structnode));//头结点tablef1=(table)malloc(sizeof(structnode));//初始定义为1K的内存,有一个空闲空间f1->start=0;f1->length=1024;//定义内存为1k;f1->
58、next=NULL;f->next=f1;//将f1插入表空闲中}//输出内存使用表voidprintfUse(){tablep1=p->next;//将使用表的所有内容显示出来printf("作业名起始地址长度");while(p1!=NULL){printf("%s",p1->name);printf("%d",p1->start);printf("%d",p1->length);p1=p1->next;}}//尚未使用的内存空闲表voidprintfNotUse(){tablef1=f->next;printf("起始地址空闲区大小");while(f1!=NULL){p
59、rintf("%d",f1->start);printf("%d",f1->length);f1=f1->next;}}//将合并后的链表进行排序voidsort(){structpnodea[100];inti=0,temp,temp1;tablef1;更多课程设计、论文、毕业设计请访问:http://www.docin.com/mydoc-5887523-1.html&folderId=72986f1=f->next;while(f1!=NULL)//将空闲分区保存到数组中,进行排序。{a[i].length=f1->length;a[i].start=f1->start;i++;
60、f1=f1->next;}//对数组进行排序,冒泡法for(intk=0;ka[j+1].length){temp=a[j+1].length;temp1=a[j+1].start;a[j+1].length=a[j].length;a[j+1].start=a[j].start;a[j].length=temp;a[j].s