【发布时间】:2021-09-01 07:55:46
【问题描述】:
在使用两个队列实现堆栈时,我收到此错误: 代码:
class Stacks():
def __init__(self):
self.q1=[]
self.q2=[]
def push(self,x):
if len(self.q1)==0:
self.q1.append(x)
print("added")
else:
for i in range(len(self.q1)-1):
self.q2.append(self.q1.pop(0))
self.q1.append(x)
for j in range(len(self.q2)-1):
self.q1.append(self.q2.pop(0))
def pop(self):
return self.q1.pop(0)
s1=Stacks()
s1.push(1)
s1.push(2)
s1.push(3)
print(s1.pop())
print(s1.pop())
print(s1.pop())
执行此代码时,我得到 2 3 和错误(从空列表中弹出)。但我应该得到 3 2 1 。什么错误?
【问题讨论】:
-
将
range(len(self.q1)-1)替换为range(len(self.q1)),第二个循环也一样。当前的实现错过了列表的最后一个元素。