【发布时间】:2022-01-06 14:30:30
【问题描述】:
我有一个包含 n 个元素的堆栈 S 和一个最初为空的队列 Q。我必须实现一个算法,该算法使用 Q 来扫描 S 以查看它是否包含某个元素 x,还有一个额外的约束是我的算法必须以原始顺序将元素返回给 S。强制是我只能使用 S、Q 和恒定数量的其他变量。
我已经实现了这个算法,它使用一个临时堆栈来保存元素,然后将它们按原始顺序返回到原始堆栈,但是我如何在不使用临时堆栈的情况下完成这项任务?
if __name__ == '__main__':
def scan(S, Q, x):
for i in range(10):
S.push(i)
S1 = ArrayStack()
flag = False
for i in range(len(S)):
Q.enqueue(S.pop())
if Q.first() == x:
flag = True
print("Your desired element has been found:", Q.first())
S1.push(Q.dequeue())
break
else:
S1.push(Q.dequeue())
if flag == False:
print("Sadly, your desired element could not be found.")
for i in range(len(S1)):
S.push(S1.pop())
scan(ArrayStack(), LinkedQueue(), 9)
【问题讨论】:
-
你可以使用递归吗?虽然以某种方式作弊
-
他们要求固定数量的其他变量,所以如果我们的递归程序的复杂性保持不变,那么也许
标签: python-3.x data-structures queue stack