• 数组实现栈


    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());
            }
            
        }
    
    }

    栈、队列

      受限访问:

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

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

      更加抽象:

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

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


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

      

  • 相关阅读:
    iOS----------弹窗动画
    书单
    如何屏蔽垃圾短信
    2018年IOS/Android UI设计规范
    关于Keychain
    OpenUDID 和 IDFA 比较
    iOS-----------关于UDID
    iOS-----------设置自定义字体
    【2020Python修炼记】前端开发之 JavaScript 基础
    【2020Python修炼记】前端开发之 CSS基础布局
  • 原文地址:https://www.cnblogs.com/yony/p/2874660.html
Copyright © 2020-2023  润新知