2016-04-04 10 views
1

İki yığınları bir araya getiren ve yeni bir yığın döndüren mrg_stacks(s1, s2) işlevini yazmaya çalışıyorum. İki parametre grubu sırayla aynı orijinal değerlerde kalmalıdır.Birlikte iki yığın ekleme

def mrg_stacks(s1,s2): 

Ben de oluşturduk test durumları:

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()) 

Sonuç:

4 
3 
2 
1 
2 
1 
4 
3 
+0

Soru nedir? –

+0

iki yığıtı birleştirir ve yeni bir yığın döndürür. –

+0

, böylece –

cevap

0

Eğer append kullanabilir ve itme ve python pop olarak eşanlamlı pop.

böylece

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) 

baskılar vardır:

+0

fonksiyonunun içinde gerekli durumlarda Stack(), push(), pop() ve is_empty() gibi şeyleri kullanabiliyorum, test vakalarımda koşturmayı denemem gerekiyor –

+0

Test senaryolarınız varsa bunları da gönderebilirsiniz Soru ile ... Eğer bu ev ödevi değilse, soru sormak için izin verilirse öğretmeninize sormalısınız. – kpie

+0

Onları postaladım? Onların en iyi –

0

Bu Turing yana her cs öğrenci yapmış aynı oyun.

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) 
+0

'u bitirmeliyim AttributeError: 'list' nesnesi özniteliğe sahip değil 'is_empty - bu hatayı al –

+0

Yapmanız gereken bu b ve yığınlar. Eğer buradan çalışamazsanız, muhtemelen atama için kredi almamalısınız. – kpie

+0

Size bir ipucu vereceğim -> my mrg_stacks işlevi bir liste döndürür. – kpie

0

Lol compsci 105? Önce bir diyagram olarak çizmeyi deneyin: üst ---> alt (yığın) Yığın A: | 2 | 1 |
Yığın B: | 4 | 3 |
Birleştirilmiş Yığın: | 4 | 3 | 2 | 1 |
Yığın ve pop yöntemleri aracılığıyla Yığınlanmış Yığına A & B yığından almak istiyorsunuz, ancak doğrudan Yığın A'dan gelip onu yanlış sırayla vermek gibi yapamazsınız. Benim ipucum: Yığınları ters çevir