原帖为: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