次のことを行うには、メソッドを作成する必要があります。
メソッド compress の目的は、スタック s1 からすべての null 要素を削除することです。残りの (null 以外の) 要素は、最初の順序で s1 に保持する必要があります。補助スタック s2 は、s1 の要素の一時ストレージとして使用する必要があります。このメソッドの計算の最後に、スタック s2 は計算の開始時と同じ内容を持っている必要があります。メソッド compress の予想される動作の例については、メソッド main を参照してください。
これまでのところ、私は持っています。
import net.datastructures.ArrayStack;
import net.datastructures.Stack;
public class Stacks {
public static <E> void compress(Stack<E> S1, Stack<E> S2) {
int counter = 0;
while (!S1.isEmpty()) {
}
if (S1.top() == null) {
S1.pop();
} else if (S1.top() != null) {
S2.push(S1.pop());
counter++;
}
for (int i = counter; i < counter; i++) {
S2.push(S1.pop());
}
}
public static void main(String[] args) {
// test method compress
Stack<Integer> S1 = new ArrayStack<Integer>(10);
S1.push(2);
S1.push(null);
S1.push(null);
S1.push(4);
S1.push(6);
S1.push(null);
Stack<Integer> S2 = new ArrayStack<Integer>(10);
S2.push(7);
S2.push(9);
System.out.println("stack S1: " + S1);
// prints: "stack S1: [2, null, null, 4, 6, null]"
System.out.println("stack S2: " + S2);
// prints: "stack s2: [7, 9]"
compress(S1, S2);
System.out.println("stack S1: " + S1);
// should print: "stack S1: [2, 4, 6]"
System.out.println("stack S2: " + S2);
// should print: "stack S2: [7, 9]"
}
}
どこが間違っているのかわかりません。コードは圧縮メソッドの前の 2 行を出力し、その後何も出力しません。