• java 数据结构与算法---栈


    原理来自百度百科

    一、栈的定义

    栈是一种只能在一端进行插入和删除操作的特殊线性表;它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来);栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针;插入一般称为进栈(PUSH),删除则称为退栈(POP)。

                                                                     

         

    二、栈的实现

    package com.jalja.org.arith;
    
    
    public class MyStack<E>{
        private Object [] arr;//存储
        private int index;//栈元素实际入栈索引
        private int maxSize;//栈的最大空间
        
        private MyStack(int maxSize) {
            this.arr=new Object[maxSize];
            this.index=0;
            this.maxSize=maxSize;
        }
        //入栈
        public void push(E e) {
            if(isFull()) {
                throw new RuntimeException("myStack  is full ");
            }
            arr[index++]=e;
        }
        //出栈
        public E pop() {
            if(isNull()) {
                throw new RuntimeException("myStack is null ");
            }
            E e=(E)arr[--index];
            return e;
        }
        //访问栈顶元素
        public E peek() {
            return (E)arr[index-1];    
        }
        //栈是否为空
        public boolean isNull() {
            return this.index <= 0;
        }
        //栈是否满了
        public boolean isFull() {
            return index>=maxSize;
        }
        public static void main(String[] args) {
            MyStack<String> myStack=new MyStack(3);
            myStack.push("A0");
            myStack.push("A1");
            myStack.push("A2");
            System.out.println(myStack.peek());
            while(!myStack.isNull()) {
                System.out.println(myStack.pop());
            }
        }
    }
  • 相关阅读:
    day09 小练习 斐波那契数列 文件
    day09三目运算
    day08文件操作
    Nginx 内容缓存及常见参数配置
    阿里开源分布式事务解决方案 Fescar 全解析
    为什么你学不会递归?刷题几个月,告别递归,谈谈我的经验
    JavaScript 复杂判断的更优雅写法
    Java 线程本地 ThreadLocal 的分析和总结
    总结异步编程的六种方式
    JAVA8新特性(吐血整理)
  • 原文地址:https://www.cnblogs.com/jalja/p/9052463.html
Copyright © 2020-2023  润新知