数组实现栈的基本操作
栈也是一种线性结构,所以可以用数组来存储。
栈的特点是:
先入栈的元素后出栈,最后入栈的元素最先出栈。
package com.xingyun.stack;
import java.util.Arrays;
public class MyStack {
int[] arr;
/*
* 栈:先进后出
* */
//构造方法,
public MyStack() {
arr=new int[0];
}
//向栈中添加数据
public void push(int item) {
//创建一个新的数组,长度是原数组的长度+1
int[] arry=new int[arr.length+1];
//利用循环将原数组中的值存入新数组
for(int i=0;i<arr.length;i++) {
arry[i]=arr[i];
}
arry[arr.length]=item;
arr=arry;
}
//查看栈顶元素
public int peek() {
return arr[arr.length-1];
}
//取出栈顶元素,这里的取出犹如之前的数组的删除,只不过每一次删除的位置是数组的最后一位
public void pop() {
//判断当前给定下标是否属于数组下标范围之内
if(arr.length==0) {
System.out.println("当前栈顶没有元素值,无法进行取出操作");
}else {
int[] arry=new int[arr.length-1];
for(int i=0;i<arry.length;i++) {
arry[i]=arr[i];
}
arr=arry;
}
}
//查看栈是否为空
public boolean isEmpty() {
return arr.length==0;
}
public static void main(String[] args) {
MyStack stack=new MyStack();
//向栈中添加元素
stack.push(5);
stack.push(6);
stack.push(7);
stack.push(8);
stack.push(9);
//查看栈中所有数据
System.out.println("栈中数据为:"+Arrays.toString(stack.arr));
//取出栈顶元素
stack.pop();
//查看栈顶元素
System.out.println("栈顶元素为:"+stack.peek());
stack.pop();
stack.pop();
//查看栈中所有数据
System.out.println("栈中数据为:"+Arrays.toString(stack.arr));
//判断栈是否为空
System.out.println("栈是否为空:"+stack.isEmpty());
stack.pop();
stack.pop();
//判断栈是否为空
System.out.println("栈是否为空:"+stack.isEmpty());
}
}