一维数组模拟数据结构-------栈

1、用一维数据模拟栈结构

public class Stack1{
    
    //一维数据模拟栈结构
    Object[] elements;
    
    
    //默认栈的容量为5
    public Stack1(){
        this(5);    //this 这里是代码的重用,也可以写成 elements = new Object[5];
                     
    }
    
    public Stack1(int max){
        elements = new Object[max];
    }
    
    //模拟栈指针
    int index;
    
    //压栈方法
    public void push(Object element) throws Stack1OperationException{
        if(index == elements.length){
            throw new Stack1OperationException("The Stack1 have been Full");
        }
        elements[index++] = element;
    }
    
    //弹栈方法
    public  Object pop() throws Stack1OperationException{
        if(index == 0){
            throw new Stack1OperationException("The Stack1 have been Empty!");
        }
        return elements[--index];
    }
    
    
}

2、自定义栈异常类

public class Stack1OperationException extends Exception{
    public void Stack1OperationException(){
        
    };
    public Stack1OperationException(String msg){
        super(msg);
    }
    
}

3、测试

public class TestStack1{
    public static void main(String[] args){
        Stack1 s = new Stack1();
        User u1 = new User("Jack",23);
        User u2 = new User("Ford",24);
        User u3 = new User("King",25);
        User u4 = new User("Smith",26);
        User u5 = new User("COOK",27);
        User u6 = new User("zhangsan",28);
        try{
            s.push(u1);
            s.push(u2);
            s.push(u3);
            s.push(u4);
            s.push(u5);
            s.push(u6);
        }catch(Stack1OperationException e){
            e.printStackTrace();
        }
        try{
            System.out.println(s.pop());
            System.out.println(s.pop());
            System.out.println(s.pop());
            System.out.println(s.pop());
            System.out.println(s.pop());
        }catch(Stack1OperationException e){
            e.printStackTrace();
        }
    }
}

class User{
    String name;
    int age;
    
    User(String name, int age){
        this.name = name;
        this.age = age;
    }
    
    public String toString(){
        return "User[name="+name+" ,age="+age+"]";
    }
}

 

posted @ 2017-10-21 22:31  StanLong  阅读(749)  评论(0编辑  收藏  举报