简单实现
栈是先入后出的数据结构,我们通过数组来实现它。栈压入元素时,我们新建一个数组将元素存入到数组末尾的位置。栈取出元素时,我们获取数组最后位置的元素就可以了。
栈的实现代码
package com.wuxudong.test;
//通过数组实现栈
public class MyStack {
//定义数组
private int [] arr;
//构造方法
public MyStack(){
arr=new int [0];
}
//压入元素
public void push(int element){
//创建一个长度比arr多1的数组
int [] newArr=new int [arr.length+1];
//循环遍历将原来的数组元素添加进去
for (int i=0;i<arr.length;i++){
newArr[i]=arr[i];
}
//将元素添加进去
newArr[arr.length]=element;
//将新数组的引用指向原来的引用
arr=newArr;
}
//取出元素并删除
public int pop(){
//如果数组为空,则抛出异常
if(arr.length==0){
throw new RuntimeException("栈是空的");
}
int element=0;
//新建一个数组,长度为原数组减1
int [] newArr=new int [arr.length-1];
for (int i=0;i<arr.length-1;i++){
newArr[i]=arr[i];
}
element=arr[arr.length-1];
//将新数组的引用
arr=newArr;
//返回栈顶元素
return element;
}
//获取栈顶元素并不删除
public int getElement(){
if(arr.length==0){
throw new RuntimeException("栈是空的");
}
return arr[arr.length-1];
}
//判断栈是否为空
public boolean isEmpty(){
return arr.length==0;
}
}
栈的测试代码
package com.wuxudong.test;
public class TestMyStack {
public static void main(String[] args) {
MyStack myStack=new MyStack();
//压入元素
myStack.push(7);
myStack.push(8);
myStack.push(9);
//取出元素
/* System.out.println(myStack.pop());
System.out.println(myStack.pop());
System.out.println(myStack.pop());*/
//获取元素
System.out.println(myStack.getElement());
myStack.pop();
System.out.println(myStack.getElement());
myStack.pop();
System.out.println(myStack.getElement());
//判断栈是否为空
myStack.pop();
System.out.println(myStack.isEmpty());
}
}