2016-04-04 13 views
1

2つのスタックをマージして新しいスタックを返す関数mrg_stacks(s1, s2)を作成しようとしています。 2つのパラメータスタックは、同じ元の値をそのまま維持する必要があります。2つのスタックを合計する

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

何が問題なのですか? –

+0

は、2つのスタックをマージし、新しいスタックを返します。 –

+0

だから私はスタック()、プッシュ()、ポップ()、is_empty()関数内で必要な場合は –

答えて

0

あなたはAPPENDを使用してプッシュして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) 

プリントがあります。

+0

のようなものを使用することができます病気をテストケースで実行しようと私は –

+0

場合は、質問がある...これが宿題でない限り、あなたは質問を投稿することができるかどうか教師に尋ねるべきです。 – kpie

+0

私はそれらを投稿しましたか?彼らがトップです –

0

チューリングが行っているので、これはすべてのCSの学生と同じゲームです。

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

AttributeError: 'list'オブジェクトに属性がありません 'is_empty - このエラーが発生しました –

+0

これは、あなたがここから仕事をすることができない場合は、おそらく割り当てのクレジットを得るべきではありません。 – kpie

+0

私はあなたにヒントを与えるつもりです - >私のmrg_stacks関数はリストを返します。 – kpie

0

Lol compsci 105? 最初に図として描画してみてください: トップ--->ボトム(スタック) スタックA:| 2 | 1 |
スタックB:| 4 | 3 |
結合スタック:| 4 | 3 | 2 | 1 |
スタックA & Bを押してポップする方法で結合したスタックに移動したいのですが、スタックAからポップするように直接行うことはできません。それを押すと不正な順序になります。だから私のヒント:スタックを反転する

関連する問題