堆栈中的数字列表返回列表

时间:2014-01-29 01:35:58

标签: python-3.x

想象一下,位于上图中轨道输入侧的四个铁路车辆,分别编号为1,2,3和4。假设我们执行以下操作序列(与图中箭头的方向兼容,并且不要求汽车“跳过”其他车辆):

由于这些操作,汽车的原始订单1234已更改为2431.

上面的操作可以通过代码SSXSSXXX更简洁地描述,其中S代表将汽车从输入移动到堆栈中,X代表将汽车从堆栈移动到输出中。 S和X的某些序列指定无意义的操作,因为在指定的轨道上可能没有可用的汽车;例如,序列SXXSSXXS无法执行。 (试试看为什么。)

编写并测试模拟火车车厢切换的功能:     #[import statements]     import q2_fun

# [constants]

# [rest of program code]
cars = [1, 2, 3, 4]
s_x = input("enter a code with s's and x's to move one stack to another")
list1 = q2_fun.train_swicth(cars, s_x)
print(list1)

from stack_array import Stack

def train_swicth(cars, s_x):

    s = Stack()
    list1 = []

    for i in range(len(s_x)):
        if s_x[i] == "s":
            a = s_x.append()
            s.push(a)
        elif s_x[i] == "x":
            b = s.pop()
            list1.append(b)


    return list1

我一直得到[]作为回报,它应该是2431与ssxssxxx。我可以得到一些帮助吗?

1 个答案:

答案 0 :(得分:0)

如果我理解你就可以做到:

def train_swicth(cars, s_x):
    i=0
    s=[]
    out=[]
    for c in s_x:
        if c=="s":
            s.append(cars[i])
            i+=1
        elif c=="x":
            out.append(s.pop())
    return out

因为列表可以用作堆栈,并附加为push-operation