java用数组实现栈
对于栈这种数据结构来说,有3种基本的操作,入栈(push),出栈(pop),查看栈顶元素(peek)和判断数组是否为空(isEmpty)。
分析:
由于使用数组实现栈,那么入栈操作就是直接在数组后面添加元素;出栈就是取出数组最后的元素;取出栈顶元素就是先判断栈是否为空,不空就返回数组的最后一个元素;判断数组是否为空就是判断数组的length是否为0.
下面是代码实现:
实现一个MyStack类
public class MyStack {
private int[] elements; //用于存放栈的数组
//构造方法,构造一个长度是0的数组
public MyStack(){
elements = new int[0];
}
//入栈操作
public void push(int element){
int[] tempArr = new int[elements.length+1];
for(int i=0;i<elements.length;i++){
tempArr[i] = elements[i];
}
tempArr[elements.length] = element;
elements = tempArr;
}
//弹栈操作
public int pop(){
if(isEmpty()==true){
throw new RuntimeException("栈已空");
}
int[] tempArr = new int[elements.length-1];
int pop_num = elements[elements.length-1];
for(int i=0;i<elements.length-1;i++){
tempArr[i] = elements[i];
}
elements = tempArr;
return pop_num;
}
//查看栈顶元素
public int peek(){
if(isEmpty()==true){
throw new RuntimeException("栈已空");
}
return elements[elements.length-1];
}
//判断栈是否是空的
public boolean isEmpty(){
if(elements.length==0){
return true;
}else{
return false;
}
}
}
下面是测试类
public class TestMyStack {
public static void main(String[] args) {
MyStack ms = new MyStack();
ms.push(1);
ms.push(3);
ms.push(6);
System.out.println("栈顶元素是:"+ms.peek());
System.out.println("弹出: "+ms.pop()+";然后弹出: "+ms.pop()+";然后弹出: "+ ms.pop());
System.out.println("栈是否空: "+ms.isEmpty());
}
}
最后是输出结果