package com.qgm.java;
import java.util.Arrays;
public class Stack {
private int[]arr; //存储栈内元素的数组
private int capacity;//总容量
private int count;//存储当前容量
private static final int resizeNum=2;//扩容因子
/*空参构造器
* */
public Stack(){
this.capacity=8;
this.arr=new int[8];
this.count=0;
}
/*
有参
*/
public Stack(int num){
if(num<1){
throw new IllegalArgumentException("非法");
}
this.capacity=num;
this.arr=new int[num];
this.count=0;
}
//入栈
public void push(int num){
if(count==capacity){
resize();
}
arr[count++]=num;
}
//出栈
public int pop(){
count--;
if(count==-1){
throw new IllegalArgumentException("空栈");
}
return arr[count];
}
/*
返回栈顶
*/
public int peek(){
if(count==0){
throw new IllegalArgumentException("空栈");
}
return arr[count-1];
}
/*
判空
*/
public boolean isEmpty(){
return count==0;
}
/*
获得当前容量
*/
public int size(){
return count;
}
/*
扩容
*/
private void resize(){
int newCapacity=capacity*resizeNum;
arr= Arrays.copyOf(arr, newCapacity);
capacity=newCapacity;
}
public static void main(String[] args) {
Stack stack=new Stack(5);
stack.push(1);
stack.push(2);
stack.push(3);
stack.push(4);
System.out.println(stack.isEmpty());
System.out.println(stack.peek());
System.out.println(stack.size());
}
}
java用数组实现栈
最新推荐文章于 2024-07-06 13:29:45 发布