磁盘管理
提交数: 148, 通过率: 57.43%, 平均分: 58.32
题目描述:
输入格式:
输入一个新文件的大小。
输出格式:
输出共两行。
1.打印出所有空闲盘块号。
2.输出整个文件分配表。
数据范围:
文件分配表长度 <= 1000。
样例输入:
5
样例输出:
4 5 6 10 14 15 16 17 18 19 3,7,13,9,5,6,10,8,-1,-1,14,1,0,11,-1,0xff,0xff,0xff,0xff,0xff
提示:
请完善下面的程序:
def mgf( allot ): #mgf的功能是从头到尾扫描文件分配表,创建空白盘区链
fhead = -1; flst = []
n = len(allot); i = 0
while i < n:
if allot[i] == 0xff:
j = i+1
while _____________________________: #填空1
j = j+1
flst. append([i, j-i,-1]) # append的作用,在列表末尾添加元素
if fhead == -1:
fhead = ____________________ #填空2
cur = fhead
else:
flst[cur][2] = len(flst)-1
cur = flst[cur][2]
____________ #填空3
else:
i += 1
return fhead, flst
allot = [ 3, 7, 13,9, 0xff, 0xff, 0xff,8,-1,-1, 0xff, 1, 0, 11, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff]
head , flst = _____________________ #填空4
p = head
while p != -1 : #打印出所有空闲盘块号
for i in range( flst[p][1] ):
print( flst[p][0] + i, end=' ' )
p = flst[p][2]
print()
wd = int( input() ); p = head
while p !=-1:
if wd != 0:
for i in range( flst[p][1] ):
if flst[p][0] + i != flst[p][0] + flst[p][1]-1:
allot[ flst[p][0] + i ] = ___________________ #填空5
else:
allot[ flst[p][0] + i ] = ____________________ #填空6
wd -= 1
if wd == 0:
allot[ flst[p][0] + i ] = -1
break
_______________ #填空7
for i in range( len( allot )-1 ) :
if allot[i] != 255 :
print( allot[i], end=',')
else:
print( '0xff' , end=',' )
if allot[-1] != 255 :
print( allot[-1] )
else:
print( '0xff' )
时间限制: 1000ms空间限制: 256MB
来源: 2023学年第二学期浙南名校