首页 > 编程语言 >利用java数组实现栈

利用java数组实现栈

时间:2022-11-01 11:38:45浏览次数:42  
标签:java private 利用 pop 数组 myStack stack size


栈作为被广泛使用的数据结构,是在一个特定范围的存储单元中存储的数据,这些数据可以重新被取出使用,与线性表相比,它们的插入和删除受到更多的约束和限定,所以又称为限定性的线性表结构。不同的是,栈是一个FILO结构,
下面是采用java数组的方式时实现栈

/**
* 利用java数组实现栈
*
* @author VicterTian
* @version V1.0
* @Date 2019/1/21
*/
public class MyStackByArray<E> {
/**
* 定义一个栈
*/
private Object[] stack;
/**
* 定义数组中存储元素的个数
*/
private int size;

private MyStackByArray() {
// 栈的初始长度为10
stack = new Object[10];
}

/**
* 判断堆栈是否为空
*/
private Boolean isEmpty() {
return this.size == 0;
}
/**
* 返回栈顶元素,却不删除
*/
@SuppressWarnings("unchecked")
private E peek(){
if (isEmpty()){
return null;
}
return (E) stack[size-1];
}

/**
* 弹栈
*/
private E pop(){
E e = peek();
stack[size -1] = null;
size--;
return e;
}

/**
* 压栈
* @param item 要压栈的数据
*/
private void push(E item){
ensureCapacity(size+1);
stack[size ++] = item;
}
/**
* 判断数组容器是否已满,若已满则扩充空间
*/
private void ensureCapacity(int size){
int length = stack.length;
if(size > length){
int newLen = 10;
// copyOf()是系统自动在内部新建一个数组,
// 调用arraycopy()将original内容复制到copy中去,并且长度为newLength。
// 返回copy; 即将原数组拷贝到一个长度为newLength的新数组中,并返回该数组
stack = Arrays.copyOf(stack,newLen);
}
}
/**
* 测试
*/
public static void main(String[] args) {
MyStackByArray<Integer> myStack = new MyStackByArray<>();
myStack.push(1);
myStack.push(2);
System.out.println("myStack.size = " + myStack.size);
System.out.println("myStack.pop() = " + myStack.pop());
System.out.println("myStack.pop() = " + myStack.pop());
}
}


标签:java,private,利用,pop,数组,myStack,stack,size
From: https://blog.51cto.com/u_13351110/5812903

相关文章