算法第四版表1.3.4-一种表示泛型定容栈的抽象数据类型的实现与测试。
这里的泛型定容栈可以和C++的template差不多,可以借助template来理解,就是先暂定一个泛型,先不告诉编译器里面是什么数据类型,在编译的时候才来定下它的数据类型,这样可以大大提高代码的通用性与写代码的效率。
注意!!:实现代码书上有给出,但如果是采用cmd命令行进行编译的就会出现报错,提示:
注: FixedCapacityStacktext.java使用了未经检查或不安全的操作。
注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。
image.png
算法第四版在表格上有写到JAVA编译器会出现警告,我们可以无视它。但我们想要正确的跑这个程序该怎么办呢?答案就是不用cmd进行编译,换成Eclipse等IDE就OK啦。
附上FixedCapacityStack的实现与测试代码(已在Eclipse上成功编译并运行):
import java.util.*;
import java.lang.*;
import java.math.*;
public class FixedCapacityStacktext{
public static void main(String[]args){
Scanner cin = new Scanner(System.in);
FixedCapacityStack<String> s = new FixedCapacityStack<String>(100);
while(cin.hasNext()) {
String item = cin.next();
if(!item.equals("-")) {
s.push(item);
}
else if(!s.isEmpty()){
System.out.print(s.pop() + " ");
}
}
System.out.println("("+s.size()+" left on stack)");
}
}
class FixedCapacityStack<Item>{
private Item[] a; //stack entries
private int N; //size
public FixedCapacityStack(int cap){
a = (Item[]) new Object[cap];
}
public boolean isEmpty(){return N==0;}
public int size(){return N;}
public void push(Item item){
a[N++] = item;
}
public Item pop(){
return a[--N];
}
}
从键盘输入:to be or not - be - - that - - - is
程序输出:to be not that or be (2 left on stack)
网友评论