问题描述:
最多使用一个临时栈,不许将数据复制到其他存储结构中,实现栈中数据的反序,如:[1,2,3,4]->[4,3,2,1]。
思路:
代码:
def reverse_stack(stack1):
stack2 = [] #初始化为空
counter = 0
length1 = len(stack1)
while counter<length1:
for i in stack1:
stack2.insert(0,i) #栈元素转移 1->2
stack1.clear() #清空栈1
top = stack2[0] #获取栈2顶元素
stack2.pop(0) #弹出栈2顶元素
cnt = 0
while len(stack2)>0:
if cnt< length1-counter-1:
stack1.insert(0,stack2[0])#未移动位置的栈元素转移 2->1
stack2.pop(0)
cnt += 1
else:
break
stack1.insert(0,top) #将临时变量存储的栈顶元素转移到栈1顶部
while len(stack2)>0:
stack1.insert(0,stack2[0])#已移动位置的栈元素转移 2->1
stack2.pop(0)
stack2.clear()
counter = counter +1
return ",".join(stack1)
if __name__ == "__main__":
print("两个栈实现队列:请输入")
str1 = input()
tmp_list = str1.split(',')
stack1 = []
for i in tmp_list:
stack1.append(i)
str2 = reverse_stack(stack1)
print(str2)
运行结果: