package com;
import java.util.Arrays;
/**
* 使用数组实现栈
* @author 小小王
*
*/
public class MyStack<E> {
private Object[] stack;
private int size;//数组中存储元素的个数
public MyStack(){
stack = new Object[10];//数组初始元素为10个
}
//判断数组中是否为空
public boolean isEmpty(){
return size == 0;
}
//查看栈顶的元素
public E peek(){
if(isEmpty()){
return null;
}
return(E)stack[size-1];
}
//取出栈顶的元素
public E pop(){
E e = peek();
stack[size-1] = null;
size --;
return e;
}
//新增元素
public E push(E item){
ensureCapacity(size+1);
stack[size++] = item;
return item;
}
//检查数组的容量是否已满
public void ensureCapacity(int size){
int len = stack.length;
if(size > len){
int newLen = 10;//每次数组容量扩展10个
stack = Arrays.copyOf(stack, 10);
}
}
//测试main方法
public static void main(String[] args) {
MyStack<Integer> s = new MyStack<Integer>();
s.push(3);
s.push(2);
System.out.println("栈中总个数:"+s.size);
System.out.println("栈顶的元素为:"+s.peek());
System.out.println("取出栈顶的元素:"+s.pop());
System.out.println("栈中总个数:"+s.size);
}
}
import java.util.Arrays;
/**
* 使用数组实现栈
* @author 小小王
*
*/
public class MyStack<E> {
private Object[] stack;
private int size;//数组中存储元素的个数
public MyStack(){
stack = new Object[10];//数组初始元素为10个
}
//判断数组中是否为空
public boolean isEmpty(){
return size == 0;
}
//查看栈顶的元素
public E peek(){
if(isEmpty()){
return null;
}
return(E)stack[size-1];
}
//取出栈顶的元素
public E pop(){
E e = peek();
stack[size-1] = null;
size --;
return e;
}
//新增元素
public E push(E item){
ensureCapacity(size+1);
stack[size++] = item;
return item;
}
//检查数组的容量是否已满
public void ensureCapacity(int size){
int len = stack.length;
if(size > len){
int newLen = 10;//每次数组容量扩展10个
stack = Arrays.copyOf(stack, 10);
}
}
//测试main方法
public static void main(String[] args) {
MyStack<Integer> s = new MyStack<Integer>();
s.push(3);
s.push(2);
System.out.println("栈中总个数:"+s.size);
System.out.println("栈顶的元素为:"+s.peek());
System.out.println("取出栈顶的元素:"+s.pop());
System.out.println("栈中总个数:"+s.size);
}
}