python使用输入构建堆栈
问题描述:
我试图使用输入(如使用raw_input())来创建堆栈。 输入: 输入的第一行包含堆栈操作的总数N, N≤100000。接下来的N行中的每一行都包含对堆栈操作的描述,其格式为PUSH AB(意为将B推入堆栈A), 或以POP A(意味着从堆栈A中弹出一个元素)的形式,其中A是 堆栈的数目(1≤A≤1000),并且B是整数(0≤B ≤109)。您可以假设,每个操作是正确的(即,在每个POP操作之前,相应的堆栈不是空的)。python使用输入构建堆栈
输出: 对于输入中描述的每个POP操作,输出POP操作从该堆栈的顶部获得的值,应用该值。数字 应根据输入中POP操作的顺序显示。 每个数字应该在一个单独的行中输出。
下面是一些示例输入和出放:
样品输入:
PUSH 1 100
PUSH 1 200
PUSH 2 300
PUSH 2 400
POP 2
POP 1
POP 2
样本输出:
由于
答
你可以尝试写自己的堆栈类,但是你没有写
Stack类: 高清POP(): #BLA 推高清(值): #bla 高清初始化(): #BLA ...
号
标准列表中有流行的方法和append(追加像推的作品)。
你可以写:
栈1 = []
stack2中= []
和分析输入文件并调用适当的方法。
答
这是一个示例代码,让你开始。这使用列表来支持堆栈的推动&弹出操作。 注意:这不是一个健壮的代码。仅演示如何使用您的用例列表。
stacks = {}
def push(s_id, data):
if s_id not in stacks:
stacks[s_id] = []
stacks[s_id].append(data)
def pop(s_id):
return stacks[s_id].pop()
f = open("input")
N = int(f.readline())
for i in range(N):
tokens = f.readline().split()
op = tokens[0]
if op == "PUSH":
push(tokens[1], tokens[2])
if op == "POP":
print pop(tokens[1])
什么问题? – 2015-02-24 01:07:18
这听起来像是一个堆积的队列。如果是这样的话,如果你不想为了课堂或学习练习而这样做,Python已经有了一个实现。 https://docs.python.org/2/library/heapq.html – 2015-02-24 01:08:00
我想要定义我自己的文件,可以包括类或只有方法。无法使用docs.python.org/2/library/heapq.html中的内建堆栈/队列。 – Nick 2015-02-24 01:18:12