现在模拟这一过程。初始有n个空教室,输入请求,每个请求包括请求类型(申请或归还)和请求人。程序输出对于每次请求的处理结果。例,当前有2个空教室,输入输出如图a所示。

(1)以3个空教室为例,对于如图b所示的输入数据,请求失败的人数是
(2)请修改程序加框处的错误
(3)请完成划线处的填空。
n=10#以初始有10个空教室为例
top=n; stack=[i for i in range(n+1)] #定义栈,存储空教室编号
head=-1; node=[[i,-1,-1]for i in range(n+1)] #定义链表节点,存储已用教室
def apply(name): #申请,从栈中弹出空教室添加至链表,并将请求人作为链表节点的内容
global top, head #声明top和head为函数外部的全局变量,下同
if top==0: return-1
node[stack[top]][1]=name
node[stack[top]][2]=head
top-=1
return head
def back(name): #归还,在链表中找到请求人所在的节点,删除后压入栈中
global top, head
p=head
if node[p][1]==name:
top+=1; stack[top]=head
head=node[head][2]
return stack[top]
while !=name and node[p][2]!=-1:
p=node[p][2]
if node[p][2]==-1: return-1
top+=1; stack[top]=node[p][2]
node[p][2]=node[node[p][2]][2]
return
s=input("请输入请求:")
while s!="-1":
#下面语句对输入进行分割后存入request
#其中request[0]表示请求类型(申请或归还),request[1]表示请求人
request=list(map(str,s.split(",")))
if request[0]=="申请":
c=apply(request[1])
if
print("教室已满,申请失败!")
else:
print(request[1],"已申请",node[c][0],"号教室")
elif request[0]=="归还":
c=back(request[1])
if c!=-1: print(request[1],"已归还",node[c][0],"号教室")
s=input("请输入请求:")

同类型试题

y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2


y = sin x, x∈R, y∈[–1,1],周期为2π,函数图像以 x = (π/2) + kπ 为对称轴
y = arcsin x, x∈[–1,1], y∈[–π/2,π/2]
sin x = 0 ←→ arcsin x = 0
sin x = 1/2 ←→ arcsin x = π/6
sin x = √2/2 ←→ arcsin x = π/4
sin x = 1 ←→ arcsin x = π/2

