将两个堆栈添加到一起

时间:2016-04-04 09:37:54

标签: python-3.x stack

我试图编写一个函数def mrg_stacks(s1,s2): ,它将两个堆栈合并在一起并返回一个新堆栈。两个参数堆栈应按顺序保留相同的原始值。

stack_a = Stack()
stack_a.push(1)
stack_a.push(2)
stack_b = Stack()
stack_b.push(3)
stack_b.push(4)
my_stack = merge_stacks(stack_a , stack_b)
while not my_stack.is_empty():
  print( my_stack.pop())
while not stack_a.is_empty():
  print( stack_a.pop())
while not stack_b.is_empty():
  print( stack_b.pop())

我还创建了测试用例:

4
3
2
1
2
1
4
3

结果:

@interface UIViewController (MyDataConnection)

- (void)thisIsYourMethodHere;

@end

3 个答案:

答案 0 :(得分:0)

你可以使用append和pop作为同义词来推送和弹出python。

所以你有

print "Hello World!\n"
def merge(a,b):
    ans = []
    while(len(a)>0):
        ans.append(a.pop())
    while(len(b)>0):
        ans.append(b.pop())
    return(ans)
a = [3,4]
b = [1,2]  
m = merge(a,b)
for k in m:
    print(k)

打印:

4
3
2
1

答案 1 :(得分:0)

这是自图灵以来每个学生都一样的游戏。

class node():
    value = None
    next = None
    def __init__(self,val):
        self.value=val
    def setNext(self,next):
        self.next=next

class Stack:
    next = None
    current = None
    def is_empty(self):
        if(current == none):
            return(True)
        return(False)
    def push(self,next):
        next.setNext(self.current)
        self.current = next
    def pop(self):
        temp = self.current
        self.current = self.current.next
        return(temp)

def mrg_stacks(a,b):
    ans = []
    while(not a.is_empty):
        ans.append(a.pop())
    while(not b.is_empty):
        ans.append(b.pop())
    return(ans)

答案 2 :(得分:0)

Lol compsci 105? 首先尝试将其绘制为图表: 顶部--->底部(堆栈) 堆栈A:| 2 | 1 |
堆栈B:| 4 | 3 |
合并堆栈:| 4 | 3 | 2 | 1 |
所以你想从堆栈A& B通过push和pop方法进入Merged Stack,但你不能直接从Stack A弹出然后推送它会给它错误的顺序。所以我的提示:反转堆栈