栈作为一种典型的先进先出数据结构类型,其最简单的实现方式是数组。
首先定义栈接口:interStack.java
package stack;
/*
定义栈接口
*/
public interface interStack<T>{
public void push(T data) throws Exception; //定义压栈操作
public T pop() throws Exception; //定义出栈操作
public T peek(); //获取栈的第一个元素
public boolean isEmpty(); //判断是否为空
public int size(); //返回栈中元素的个数
}
其次定义实现类
package stack;
/*
栈的实现类
*/
public class stack<T> implements interStack<T>{
static final int defaultSize=20; //定义栈的默认容量
private int size;
private T[] array; //定义数据存储数组
//初始化栈参数
public stack(){
size=0;
array=(T[]) new Object[defaultSize];
}
//根据用户输入参数初始化栈参数
public stack(int inputSize){
size=0;
array=(T[]) new Object[inputSize];
}
//入栈操作
public void push(T data) throws Exception {
if(size<array.length){
array[size]=data;
size++;
}else {
throw new Exception("栈已满");
}
}
//出栈操作
public T pop() throws Exception{
T topData;
if(isEmpty()){
throw new Exception("栈为空");
}else{
topData=array[size-1];
size--;
}
return topData;
}
//获取栈顶元素
public T peek(){
return array[size-1];
}
//判断栈是否为空
public boolean isEmpty(){
return size==0;
}
//返回栈的长度
public int size(){
return size;
}
public static void main(String[] args){
stack <String> stack=new stack<String>(20);
System.out.println("是否为空:"+stack.isEmpty());
try {
stack.push("I");
stack.push("am");
stack.push("Andy");
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("栈顶元素:"+stack.size());
System.out.println("栈顶元素:"+stack.peek());
try {
System.out.println("移除元素:"+stack.pop());
} catch (Exception e) {
e.printStackTrace();
}
System.out.println("栈顶元素:"+stack.size());
System.out.println("栈顶元素:"+stack.peek());
}
}