java如何创建一个栈
栈(Stack)是限定只能在一段进行插入和删除操作的线性表。进行插入和删除操作的一端称为“栈顶”(top),另一端称为“栈底”(bottom)。栈的插入操作称为“入栈”(push),栈的删除 操作称为“出栈”(pop)。栈具有后进先出(LIFO),先进后出(FILO)的特性。
操作方法
- 01
栈是Vector的一个子类,它实现了一个标准的后进先出的栈。堆栈只定义了默认构造函数,用来创建一个空栈。 堆栈除了包括由Vector定义的所有方法,也定义了自己的一些方法。除了由Vector定义的所有方法,自己也定义了一些方法:
- 02
详细的代码可参考一下: package zhangtingting; public class StackTest { private Object[] stack; //元素个数; private int size; //默认长度为10; public StackTest(){ this(10); } //也可以自己设置长度,即容量; public StackTest(int len){ stack = new Object[len]; } //返回元素个数; public int size(){ return size; } //返回数组长度,即容量; public int capacity(){ return stack.length; } //实现动态的数组; public void ensureCapacity(){ if(size() == capacity()){ Object[] newStack = new Object[size() * 3 / 2 + 1]; System.arraycopy(stack, 0, newStack, 0, size()); stack = newStack; } } //入栈; public void push(Object o){ size++; ensureCapacity(); stack[size - 1] = o; } //判空; public boolean isEmpty(){ return size == 0; } //出栈; public Object pop(){ //首先要判空; if(isEmpty()){ throw new ArrayIndexOutOfBoundsException("不能为空"); } Object o = stack[--size]; stack[size] = null; return o; } public static void main(String[] args) { StackTest stack = new StackTest(3); String[] data = new String[] { "a", "b", "c" }; for (int i = 0; i < data.length; i++) { stack.push(data[i]); System.out.println(data[i] + ""); } System.out.println("***********"); while (!stack.isEmpty()) { System.out.println(stack.pop() + ""); } } }