顺序栈:函数
定义一个接口:IStack<E>spa
public interface IStack<E> { E push(E item); E pop(); E peek(); int size(); boolean empty(); }
定义一个SeqStack<E>类实现栈的抽象数据类型类code
public class SeqStack<E> implements IStack<E> { private int maxsize; private E[] data; private int top; //初始化栈 public SeqStack(Class<E> type,int size){ data=(E[]) Array.newInstance(type, size); maxsize=size; top=-1; } //入栈 public E push(E item) { // TODO Auto-generated method stub if(!isFull()){ data[++top]=item; return item; }else return null; } //栈是否为满 public boolean isFull() { // TODO Auto-generated method stub if(top==maxsize-1){ return true; }else{ return false; } } //出栈操做 public E pop() { E item=null; if(!empty()){ item=data[top--]; } return item; } //获取栈顶元素 public E peek() { // TODO Auto-generated method stub E item=null; if(!empty()){ item=data[top]; } return item; } public int size() { // TODO Auto-generated method stub return top+1; } public boolean empty() { // TODO Auto-generated method stub if(top==-1){ return true; }else return false; } }
主函数实现blog
public static void main(String[] args) { // TODO Auto-generated method stub int[] data={33,45,3,7,5}; SeqStack<Integer> stack=new SeqStack<Integer>(Integer.class,data.length); //入栈 System.out.println("******入栈*******"); for(int i=0;i<data.length;i++){ stack.push(data[i]); System.out.println(data[i]+"入栈"); } int size=stack.size(); System.out.println(size+"*******"); //出栈 System.out.println("***出栈****"); for(int i=0;i<data.length;i++){ stack.pop(); System.out.println(stack.pop()+"出栈"); } }