下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include<stdio.h>/定义输入/输出函数#include<iostream.h>/数据流输入/输出 #include<string.h>/字符串处理#include<iomanip.h>/参数化输入/输出const int MJ=10;/假定系统允许的最大作业数量为10typedef struct nodeint address;int length;char tag10;job;job freesMJ;int free_quantity;job occupysMJ;int occupy_quantity;int read()FIL
2、E *fp;char fn10;cout<<"请输入初始空闲表文件名:"cin>>fn;if(fp=fopen(fn,"r")=NULL) 其意义是在当前目录下打开文件file a,只允许进行“读”操作,并使fp指向该文件cout<<"错误,文件打不开,请检查文件名"<<endl;elsewhile(!feof(fp)fscanf(fp,"%d,%d",&freesfree_quantity.address,&freesfree_quantity.le
3、ngth);free_quantity+; fscanf(文件指针,格式字符串,输入表列);return 1;return 0;void sort()int i,j,p;for(i=0;i<free_quantity-1;i+)p=i;for(j=i+1;j<free_quantity;j+)if(freesj.address<freesp.address)p=j;if(p!=i)freesfree_quantity=freesi;freesi=freesp;freesp=freesfree_quantity;void view()int i;cout<<endl
4、<<"mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm"<<endl;cout<<"输出空闲区表:n起始地址 分区长度 状态n"<<endl;for(i=0;i<free_quantity;i+)cout.setf(2);cout.width(12);cout<<freesi.address;cout.width(10);cout<<freesi.length;cout.width(8);cout<&l
5、t;freesi.tag<<endl;cout<<endl<<"wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww"<<endl;cout<<"输出已分分区表:n起始地址 分区长度 占用作业名n"<<endl;for(i=0;i<occupy_quantity;i+)cout.setf(2);cout.width(12);cout<<occupysi.address;cout.width(10);
6、cout<<occupysi.length;cout.width(8);cout<<occupysi.tag<<endl;void ear()char job_name10;int job_length;int i,j,flag,t;cout<<"请输入分配内存的作业名和空间大小:"cin>>job_name;cin>>job_length;flag=0;for(i=0;i<free_quantity;i+) /寻找空间大于作业的空闲区登记项if(freesi.length>=job_len
7、gth)flag=1;if(flag=0) /未找到空闲区,返回cout<<endl<<"无可用的空闲区n"<<endl;elset=0;i=0;while(t=0)if(freesi.length>=job_length)/找到可用空闲区,开始分配t=1;i+;i-;occupysoccupy_quantity.address=freesi.address; /修改已分配区表 strcpy(occupysoccupy_quantity.tag,job_name);occupysoccupy_quantity.length=job_
8、length;occupy_quantity+;if(freesi.length>job_length)freesi.address+=job_length;freesi.length-=job_length;elsefor(j=i;j<free_quantity-1;j+)freesj=freesj+1;free_quantity-;cout<<"内存空间成功:)"<<endl; void reclaim()/回收作业所占的内存空间char job_name20;int i,j,flag,p=0;int address;int leng
9、th;/寻找已分分区表中对应的登记项cout<<"输入要回收分区的作业名:"cin>>job_name;flag=-1;for(i=0;i<occupy_quantity;i+)if(!strcmp(occupysi.tag,job_name)flag=i;address=occupysi.address;length=occupysi.length;if(flag=-1) /在已分分区表中找不到作业cout<<"没有这个作业名"<<endl;else/修改空闲区表,加入空闲表for(i=0;i<
10、;free_quantity;i+)if(freesi.address+freesi.length)=address)if(i+1)<free_quantity)&&(freesi+1.address=address+length)freesi.length=freesi.length+freesi+1.length+length;for(j=i+1;j<free_quantity;j+)freesj=freesj+1;free_quantity-;p=1;elsefreesi.length+=length;p=1;if(freesi.address=(addres
11、s+length)freesi.address=address;freesi.length+=length;p=1;if(p=0)freesfree_quantity.address=address;freesfree_quantity.length=length;free_quantity+;/删除分配表中的该作业for(i=flag;i<occupy_quantity;i+)occupysi=occupysi+1;occupy_quantity-;void main()int flag=0;int t=1;int chioce=0;int i;for(i=0;i<MJ;i+)f
12、reesi.address=-1;/空闲区表初始化freesi.length=0;strcpy(freesi.tag,"free");occupysi.address=-1;/已分分区表初始化occupysi.length=0;strcpy(occupysi.tag,"");free_quantity=0;occupy_quantity=0;flag=read();while(flag=1)sort();cout<<"选择功能项: (0-退出,1-分配内存,2-回收内存,3-显示内存)n"<<endl;cout<<&
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 早教课颜色配对课程设计
- 2024年四川省建筑安全员《C证》考试题库
- 悬梁铸造课程设计
- 簧片的冲压课程设计
- 素描的微课程设计
- 爬虫课程设计大一作业
- 种植樱桃课程设计意图
- 物理架构与实践课程设计
- 矿压课程设计
- 2024年湖南省建筑安全员考试题库及答案
- DD 2019-11 地-井瞬变电磁法技术规程
- 黑龙江省哈尔滨市香坊区2023-2024学年八年级上学期期末数学试题
- 老人及儿童合理用药课件
- 《格林童话》课外阅读试题及答案
- 重型再生障碍性贫血造血干细胞移植治疗课件
- 私立民办高中学校项目投资计划书
- 《电机与电气控制技术》教学设计及授课计划表
- “销售技巧课件-让你掌握销售技巧”
- 2019北师大版高中英语选修一UNIT 2 单词短语句子复习默写单
- 房地产项目保密协议
- 汽车配件产业园项目商业计划书
评论
0/150
提交评论