プロが教えるわが家の防犯対策術!

これでやっと最後です。
一つのスタックに積んである5つの数字を二つのスタックを用いて逆さにする問題です。

Suppose that you have a stack "S". Using the usual stack operations (given in figure 4.7 on page 138),
-explain how you can reverse the order of elements on stack "S" using only two additional stacks.
-write a void method called "reverse" the order of elements on stack "s". The method creates two new stacks and will use only the stack operations given in figure 4.7.

Figure 4.7(これらの命令しか使ってはいけません)
boolean empty()
Object peek()
Object pop()
Object push(el)
int search(el)
Stack()

public void reverse (Stack s) {
Stack s1, s2;
s1 = new Stack();
s2 = new Stack();
//ブランク

25
5
30
20
10

S ←スタック(実行前)

10
20
30
5
25

S ←スタック(実行後)

私自作のメソッド
public void reverse (Stack s) {
Stack s1, s2;
s1 = new Stack();
s2 = new Stack();
while(!S.empty()) {
S1.push(S.pop());
}
while(!S1.empty()) {
s2.push(S1.pop());
}
while(!S2.empty()) {
S.push(S2.pop());
}
}

アルゴリズムは分かっている(つもりな)んですが
本当にこれで動くのか分かりません。
mainも含めたプログラムは教科書に載っていません。
pushとpopの図はたくさんあるのですが、肝心のプログラムが載っていません。
上のであっていますでしょうか?
スタックの神様、どうかお助け下さい。m(__)m

A 回答 (1件)

本当に動くか?、あってるか?


といわれても、言語仕様も環境もわからない状態では、
「あっている気がする」としか返答できないでしょう。

mainを書けば動作確認できるのなら、
mainで
・Stack Sを用意
・Sに初期値を設定
・reverseを実行
・Sの中身を表示
すれば、確認できるかと思いますが。

実際に動作させるのが困難な場合は、コインなどを
使って、手で確認するのが良いです。
    • good
    • 0
この回答へのお礼

あっていたようです。
ありがとうございました。

お礼日時:2003/10/27 06:26

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!