java数据结构-栈的底层实现:数组实现压入,弹出,判断空栈

package com.stack;

/**
* @auther 付强
* @date 2020/2/13 - 12:45
*/
public class Mystack {
//栈的底层我们使用数组来存储数据
int[] elements;
public Mystack(){
elements=new int[0];
}
//压入元素
public void push(int element){
//创建一个新的数组
int[] newArr=new int[elements.length+1];
//把原数组中的元素复制到新的数组中
for (int i = 0; i < elements.length; i++) {
newArr[i]=elements[i];
}
//把添加的元素放入新数组中的
newArr[elements.length]=element;
//使用新数组替换就数组
elements=newArr;
}
//取出栈顶元素
public int pop(){
//栈中没有元素
if(elements.length==0){
throw new RuntimeException("stack is empty");
}
//取出数组的最后一个元素
int element = elements[elements.length - 1];
//创建一个新的数组
int[] newArr=new int[elements.length-1];
//把原数组中处理最后一个元素的其他元素都放入新数组中
for (int i = 0; i < elements.length - 1; i++) {
newArr[i]=elements[i];
}
//替换数组
elements=newArr;
//返回栈顶元素
return element;
}
//查看栈顶元素
public int pick(){
//栈中没有元素
if(elements.length==0){
throw new RuntimeException("stack is empty");
}
return elements[elements.length-1];
}
//判断栈是否为空
public boolean isEmpty(){
return elements.length==0;
}

}

猜你喜欢

转载自www.cnblogs.com/fuqiang-java/p/12303305.html
今日推荐