• Java数据结构(一):栈


    导言:栈和我们的现实当中的箱子是一样的,保持一个先进后出,后进先出的原则。比如我们往一个箱子堆积衣服,一件一件地放进去之后,过一段时间再回来拿。那么最先放进去的衣服肯定最后拿出来,最后放进去的衣服就会最先拿出来,或许可以类比于给老师提交作业,最先提交作业的同学老师总是最后批改。 因此在Java里面我们可以通过一个数组来模拟这个栈。

    首先我们可以构建一个栈,然后在另外一个类当中对栈进行插入数据和移除数据的操作。

    一.Mystack.java

    /**
     * Created by lenovo on 2019/5/11.
     */
    public class Mystack {
    //底层实现是一个数组
        private  long[] arr;
        private int top;
    //默认的构造方法
        public Mystack()
    {
        arr=new long[10];
        top=-1;
    
    
    }
    //带参数的构造方法,参数为数组的初始化大小
        public Mystack(int maxsize)
        {
            arr=new long[maxsize];
            top=-1;
        }
    //往栈里添加数据
        public void push(int value)
        {
            arr[++top]=value;
    
        }
        //移除数据
        public long pop()
        {
            return arr[top--];
    
        }
        //查看数据
        public long peek()
    
        {
    
            return arr[top];
    
        }
        //判断是否为空
        public boolean isEmpty()
        {
            return top == -1;
        }
    //判断是否满了
        public  boolean isFull()
        {
    
            return top==arr.length-1;//因为top是从0开始的
        }
    
    }

    然后我们在一个类当中对这个栈进行操作即可。

    二.TestMyStack.java

    /**
     * Created by lenovo on 2019/5/11.
     */
    public class TestMyStack {
        public static void main(String[] args) {
            Mystack ms=new Mystack(4);//竟然要在主函数里面进行调用才会管用,太神奇了
            ms.push(23);
            ms.push(12);
            ms.push(1);
            ms.push(90);
            System.out.println(ms.isEmpty());
            System.out.println(ms.isFull());
            System.out.println(ms.peek());
            System.out.println(ms.peek());
            while(!ms.isEmpty())
            {
                System.out.println(ms.pop()+",");
            }
            System.out.println(ms.isEmpty());
            System.out.println(ms.isFull());
        }

    最后的输出结果为:

    false
    true
    90
    90
    90,
    1,
    12,
    23,
    true
    false

    上面的代码很容易理解,我也就不多讲了。关键是要理解这种后进先出的数据结构是如何实现的。

  • 相关阅读:
    Java-Class-C:org.springframework.util.Assert.java
    获取数组中最大最小值方法
    1423 Greatest Common Increasing Subsequence (LCIS)
    Strange Addition
    APUE读书笔记-第15章-进程间通信
    【技术文档】开发一个人力资源管理系统遇到的问题及解决的方法
    picture control控件
    armlinux下的网路传输(tcp/ip)
    黑马程序员—面向接口编程的好处
    【.NET中AOP的实现方案】静态代理
  • 原文地址:https://www.cnblogs.com/geeksongs/p/10849125.html
Copyright © 2020-2023  润新知