EStack クラスは正常に動作し、結果の出力が得られます (これは、最上位の要素を取得し、そのコピーをメソッド プッシュダウンで指定されたスタックの任意の場所に配置します)。
ただし、整数に対してのみ機能させることができました(したがって、ほとんどのものを整数に変えました)。スタックに置かれた任意のタイプのオブジェクト (int、string、char、double、float など) に対してこれを機能させるにはどうすればよいですか?
import java.util.*;
public class EStack extends Stack{
public static void pushdown(Stack s, int i){
Integer marker = (Integer) s.size() - i;
Integer top = (Integer) s.peek();
Stack temp = new Stack();
while(s.empty() != true){
Integer elem = (Integer) s.pop();
temp.push(elem);
}
while(temp.empty() != true){
if(marker == s.size()){
s.push(top);
}
Integer elem = (Integer) temp.pop();
s.push(elem);
}
}
public static void main(String[] args){
Stack s = new Stack();
s.push(1);
s.push(2);
s.push(3);
s.push(4);
pushdown(s, 2);
while(s.empty() != true){
System.out.println(s.pop());
}
}
}
出力:
4
3
4
2
1