想要实现栈的输入输出,首先需要了解栈的特性。栈是基于数组进行的实现的,底层的就是数组元素。对于栈来说,栈的最大特点是先进后出。
为什么是先进后出呢?这和栈的结构有关,你可以把它看成一个有底没顶的容器,先进来的元素位于最底部,后进来的元素位于上面,由于它底部是封闭的,无法出入,所以只能在上面出入,因此,对于栈内的元素是先进后出。
进栈:
进栈元素:1,2,3,4,5
把这当作一个栈,size是一个指针,当元素1进栈时,size指针往后移一位,size++,其他元素步骤一样。
出栈:
由于栈是先进后出,所以出栈从元素5开始。当元素5出栈时,size需要往前移一位,所以需要
size--
代码实现:
package Package;
import java.util.Arrays;
public class Stack {
private int[] data =new int[5];//定义一个数组
private int size =0;//定义指针
//入栈
public void push(int i){
data[size++]=i;
if (size>=data.length){
data=Arrays.copyOf(data,size*2);
}
}
//出栈
public int pop(){
if (size==0){
return 0;
}
int result=data[size-1];
size--;
return result;
}
}