) list).addFirst(i);
// 向栈中添加数据时,都是从栈首开始的
index++;
// 每当数据成功添加进去后,栈的数据最大下标值+1
}
public Object pop() {
// 从堆栈中取元素,从栈顶开始取
if (!list.isEmpty()) {
Object t = list.get(0);
// 用一个中间的变量保存栈顶的元素
list.remove(0);
// 删除该栈的栈顶元素
size--;
// 栈的大小减1
return t;
// 返回栈顶元素
} else
System.out.println("该栈为空,返回为0!");
// 当栈为空时显示提示信息,返回null
return null;
}
public boolean isEmpty() {
// 判断栈是否为空
return this.size == 0;
}
public Object peek() {
// 返回栈定的首元素,但并不删除.如果为空则输出null
if (!this.isEmpty()) {
Object t = list.get(0);
// 定义一个object类的数据用于存储该栈未删除前的栈首
return t;
} else {
System.out.println("该栈为空!");
return null;
}
}
public int Size() {
// 返回该栈的长度
return list.size();
}
// 下面是测试代码
public static void main(String[] args) {
// 用户自定义该栈的长度
NewStack stack = new NewStack();
// 栈是先进后出 .
stack.push(4);
stack.push("小明");
stack.push("hiyu");
stack.push(5);
stack.push("小红");
stack.push("小白");
// stack.push(3);
System.out.println("你目前自定义的栈的长度为:"
+stack.Size());
System.out.println("该栈是否为空:" +
stack.isEmpty());
System.out.println("当前栈顶为:" + stack.pop() + "
并且删除 ");
// 返回栈首并删除
System.out.println("删除之后的栈顶数据为:" +
stack.peek());
// 测试删除后并返回的该栈的栈首数据
}
}
程序结果:
你目前自定义的栈的长度为:6
该栈是否为空:false
当前栈顶为:小白 并且删除
删除之后的栈顶数据为:小红
总结:
在用java定义栈的时候,要考虑用数组和集合的差别.如果该栈只是单纯的存储数字型数据,且长度不大才考虑用数组.一般情况下都是用list集合,我这里用的是linkedlist,并且调用了一些实用的方法