数组实现栈

public class StackX {
    private int maxSize;
    private long[] stackArray;
    private int top;
    
    public StackX(int max){
        stackArray = new long[max];
        top = -1;//空栈
    }
    
    public void push(long j){
        stackArray[++top] = j;
    }
    
    public long pop(){
        return stackArray[top--];
    }
    
    public long peek(){
        return stackArray[top];
    }
    
    public boolean isEmpty(){
        return top == -1;
    }
    
    public boolean isFull(){
        return top == (maxSize -1);
    }
    
    public static void main(String[] args) {
        //创建栈
        StackX stack = new StackX(10);
        //入栈
        stack.push(10);
        stack.push(20);
        stack.push(30);
        stack.push(40);
        stack.push(50);
        
        //查看栈
        System.out.println("查看栈:"+stack.peek());
        
        //出栈
        while(!stack.isEmpty()){
            System.out.println("出栈"+stack.pop());
        }
        
    }

}

栈、队列

  受限访问:

    在数组中若知道数据项的下标,便立即可以反问该数据项;或者通过顺序搜索数据项,访问到数组中的各项数据。而栈、队列等数据结构,访问是受限的,即在特定时刻只有一个数据项可以被读取或者删除(除非作弊)。

    这些结构接口的设计增强了这种受限访问。访问其他数据项(理论上)是不允许的。

  更加抽象:

    栈、队列和优先级队列是比数组和其他数据存储结构更为抽象的结构。主要通过接口对栈、队列和优先级队列进行定义,这些接口表明通过他们可以完成的操作,而他们的主要实现机制对用户来说是不可见的。

    例如,栈的主要机制可以用数组来实现,但也可以通过链表来实现。优先级队列内部实现可以用数组或一种特别的树——堆来实现(用一种数据结构来实现另一种数据结构)。


  栈只允许访问一个数据项:即最后插入的的数据项。移除这个数据项后才能访问倒数第二个插入的数据项,一次类推。栈也是那些相当复杂的数据结构算法的遍历工具

  

原文地址:https://www.cnblogs.com/yony/p/2874660.html