58集团23校招测试工程师卷——考查队列

编程题-操作系统先入先出算法实现

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) 

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值