用c 语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程alloc()和回收过程free()
请求指正建议,与君共勉:
用c 语言分别实现采用首次适应算法和最佳适应算法的动态分区分配过程alloc()和回收过程free(),其中,空闲分区通过空闲分区链来管理;在进行内存分配时,系统优先使用空闲区低端的空间。。。。
假设初始状态下,可用的内存空间为640KB,并有下列的请求序列:
作业1申请130KB 作业2申请60KB。。。。。
银行家算法实现(代码全面解析)
一.算法分析:
(一)数据结构:
1.可利用资源向量Available
2.最大需求矩阵Max
3.分配矩阵Allocation
4.需求矩阵Need
(二)功能介绍:
模拟实现Dijkstra的银行家算法以避免死锁的出现.分两部分组成:
第一部分:银行家算法(扫描)
1.如果Request<=Need,则转向2;否则,出错
2.如果Request<=Available,则转向3,否则等待
3.系统试探分配请求的资源给进程
4.系统执行安全性算法
第二部分:安全性算法
1.设置两个向量
(1).工作向量:Work=Available(表示系统可提供给进程继续运行所需要的各类资源数目 (2).Finish:表示系统是否有足够资源分配给进程(True:有;False:没有).初始化为False
2.若Finish[i]=False&&Need;<=Work,则执行3;否则执行4(I为资源类别)
3.进程P获得第i类资源,则顺利执行直至完成!并释放资源:
Work=Work+Allocation;Finish[i]=true;转2
4.若所有进程的Finish[i]=true,则表示系统安全;否则,不安全!
电梯模拟系统的实现
详细的电一个梯模拟算法分析,设计与实现,可以提供给你一个全新的程序设计思路~
数据结构实习之电话号码查询系统
数据结构课程学习过程中的实习优秀作品,值得我们反复斟酌,将散列表用的恰到好处,
数据结构实习之唯一确定一颗二叉树
老师给的优秀学习作品,在课程的学习过程中值得我们去思考探索
数据结构实习之n(n≥20)的阶乘
很有价值的学习资源,老师给的优秀作品,值得我们学习。
程序员必会的40个小技巧
编程是一门学问,做学问避免不了走弯路,要节约时间,就一定要懂得方法,
递归实现汉诺塔
guide:
1、此程序为汉诺塔程序(此代码用到递归,包括直接递归和间接递归(间接递归是用在了重复使用本程序那块));
2、此程序的代码流程是,由main函数进入之后,先后调用的函数是由上至下定义的;
3、亲爱的朋友,请尊重偶的版权,你也会得到相应的尊重哦!
4、若此程序或代码有不足或不对的地方,还望得到指正!
5、循环虽然比递归算法快,但比较而言,递归更容易让人理解!
purpose:
1、培养独立思考算法的能力,特别是递归时,用到的是数学中的数列,找到整个递归的最先出栈的函数,以及数列的第n项与第n-1项的关系就能用递归解决问题;
2、通过试数来推算自己的程序逻辑是否有beg,并找出修复之;
3、熟练一下结构体和链表的基本推理,尤其是插入和删除元素时指针的走向!
function:
1、简易输出汉诺塔步骤(由哪根柱子移到哪根柱子);
2、详细输出汉诺塔步骤(在功能1基础上逐步输出每次移动之后的盘子分布);
3、二维详细输出汉诺塔步骤(在前2功能基础上逐步输出二维盘子分布图);
4、动态二维输出汉诺塔步骤(在前3功能基础上演示动态输出并提示下一步);
5、可重复使用本程序!
在VC++6.0中的输出结果是:
---------------------------
…………
开始移动:
第1次移动过程:
A(1号盘)→B
此时灰原の盘子分布图:
A柱子 B柱子 C柱子
↓ ↓ ↓
1层为空层
第2层: 2* 1*
请按任意键继续. . .
第2次移动过程:
A(2号盘)→C
此时灰原の盘子分布图:
A柱子 B柱子 C柱子
↓ ↓ ↓
1层为空层
第2层: 1* 2*
请按任意键继续. . .
第3次移动过程:
B(1号盘)→C
此时灰原の盘子分布图:
A柱子 B柱子 C柱子
↓ ↓ ↓
第1层: 1*
第2层: 2*
请按任意键继续. . .
请问您是否要继续重玩游戏,需要重玩请按“Y”,否则按“N”结束程序!
…………
---------------------------
数据结构实习——图的遍历
【问题描述】
有一个长方形的房间,房间里的地面上布满了正方形的瓷砖,瓷砖要么是红色的,要么是黑色的。一个人站在其中一块黑色的瓷砖上,他可以向四周的瓷砖上移动,但是不能移动到红色的瓷砖上,只能在黑色的瓷砖上移动,那么他可以到达这个房间中的黑色瓷砖的数目为多少?
【测试数据】
输入的测试数据应该是两个整数W和H,分别表示这个房间中x方向和y方向上瓷砖的数目。可以选择相应的符号代替黑色瓷砖和红色瓷砖,例如“#”表示黑色瓷砖,“*”表示红色瓷砖,“@”表示该位置的黑色瓷砖,且此时人站在上面,注意每个测试数据只有一个“@”符号。输出数据即为从初始位置的黑色瓷砖到最后位置处总共经过的黑色瓷砖数目。并输出移动路径的可视化结果。
【需求分析】
利用深度优先搜索算法实现图的遍历,用户输入行列数后,从当前位置访问,进行深度优先遍历。
系统需求环境:win10 vs2015 vc6.0
【概要设计】
1. 输入房间的行列数,然后输入黑红砖块的位置显示并用“@”表示当前黑块的位置;
2. 按enter键后自动输出结果。
【测试数据】
1.#*#*# (5行5列)
**#**
*#@*#
**#*#
#***#
2.@##(3行3列)
*##
***
3.@###(4行4列)
***#
###*
####