编程题-操作系统先入先出算法实现
1 2 3 4 5 6 7 8 9 10 11 |
|
时间限制:C/C++ 1秒,其他语言2秒
空间限制:C/C++ 32M,其他语言64M
输入描述:
第一个数为cachesize,表示内存可以存储的页面数; 其余数字组成sourcelist,表示按照顺序往内存空间中放入的页面编号;
输出描述:
输出sourelist中经过置换后,最后保留在内存中的页面号如: [5,3,6]
示例1
输入例子:
2,3,4,5,6
输出例子:
[5, 6]
例子说明:
参数分两部分,第一个数代表cachesize的大小,剩余为页面号
本题主要考察队列的知识,可以用python面向对象特性创造一个队列,按照队列长度未满和队列长度已满两种情况考虑。
class queue:
def __init__(self):
self.queue=[]
def push(self,page):
self.queue.append(page)
def remove(self,page):
self.queue.remove(page)
def pop(self):
self.queue.pop(0)
pages=list(map(int,input().split(',')))
size=pages[0]
qlist=queue()
for i in range(len(pages)):
#队列长度未满,可添加
if len(qlist.queue)<size:
if pages[i] in qlist.queue:
qlist.remove(pages[i])
qlist.push(pages[i])
else:
qlist.push(pages[i])
#队列长度已满
if len(qlist.queue)==size:
if pages[i] in qlist.queue:
qlist.remove(pages[i])
qlist.push(pages[i])
else:
qlist.pop()
qlist.push(pages[i])
print(qlist.queue)