java中堆栈的模拟

来源:互联网 发布:mac qq 远程控制 编辑:程序博客网 时间:2024/04/27 17:44

原帖为:http://blog.csdn.net/fengyifei11228/article/details/5625961

本帖对其稍加改进

class StackDemo{int top;Object[] datas;int maxSize;StackDemo(int max){this.maxSize=max;datas=new Object[maxSize];top=-1;}public boolean isEmpty(){return top==-1;//如果top依然为-1说明没有往里面放值,所以为空。否则为假不为空。}public boolean isFull(){return top+1==maxSize;//注意栈的第一个元素角标为0}//获取堆栈长度public int getSize(){return maxSize;}//获取堆栈中存放的元素个数public int getElementsCount(){return top+1;}//添加元素public  boolean push(Object obj){if (isFull()){System.out.println("栈已满,不能添加啦2B");return false;}datas[++top]=obj;return true;}//取出元素  public Object pop(){if (isEmpty()){System.out.println("栈已空,不能取出啦2B");}return datas[top--];}//返回栈顶元素public Object getPeek(){return this.datas[getElementsCount()-1];}}class Student{private String name;private int age;Student(String name,int age){this.name=name;this.age=age;}public void setName(String name){this.name=name;}public void setAge(int age){this.age=age;}public String getName(){return name;}public int getAge(){return age;}}class StackTest {public static void main(String[] args) {StackDemo sd=new StackDemo(100);sd.push("小明1");sd.push("小明2");sd.push(new Integer(2));sd.push(new Student("张三",18));System.out.println("元素个数:"+sd.getElementsCount());System.out.println("姓名:"+((Student)sd.getPeek()).getName()+"---"+"年龄:"+((Student)sd.getPeek()).getAge());//返回栈顶元素while (sd.top>=0){System.out.println(sd.pop());}System.out.println("元素个数:"+sd.getElementsCount());}}

打印结果为:

元素个数:4
姓名:张三---年龄:18
Student@6af62373//此处是Student的地址
2
小明2
小明1
元素个数:0


0 0
原创粉丝点击