美文网首页
FixedCapacityStack(一种表示泛型定容栈的抽象数

FixedCapacityStack(一种表示泛型定容栈的抽象数

作者: myleosu | 来源:发表于2018-05-22 22:48 被阅读0次

    算法第四版表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)

    相关文章

      网友评论

          本文标题:FixedCapacityStack(一种表示泛型定容栈的抽象数

          本文链接:https://www.haomeiwen.com/subject/ztxljftx.html