分布式系统-常用数据结构实现-—队列与栈

上大学时候 教科书 叫做堆栈,传达的是一种后入先出的算法思想。但其实我们知道,堆和栈是两个截然不同的东西。

堆栈其实是数据结果中的两个概念 ,是存放数据的方式,堆:顺序进出 (FIFO);栈:后进先出(Last-In/First-Out)

在Java中,如何实现呢? 需要重点关心栈的特点,根据这个特点来实现: 

先进后出,每次只能操作最上面的数据;

关键代码是对 头部指针控制

package com.cheri.springallmaster.datastructure;

/**
 * 栈的实现:特点,先进后出,每次只能操作最上面的数据;
 *
 * @author Aaron Du
 * @version V1.0
 * @date 2020/5/10 21:08
 **/
public class StackCustom {

    private long maxsize;
    private long[] StackArr;
    private int top;

    public StackCustom(int size) {

        this.maxsize = size;
        StackArr = new long[size];
        top = -1;
    }

    public void push(long item) {
        StackArr[++top] = item;
    }

    /**
     * 返回并弹出最上面的那个数据
     *
     * @return
     */
    public long pop() {
        return StackArr[top--];
    }

    /**
     * 只能返回,不会弹出数据
     */
    public long peek() {
        return StackArr[top];
    }

    public Boolean isEmpty() {
        return top == -1;
    }

    public Boolean isFull() {
        return top == maxsize - 1;
    }

    public static void main(String[] args) {
        StackCustom stackCustom = new StackCustom(10);
        stackCustom.push(23);
        stackCustom.push(24);
        stackCustom.push(25);
        stackCustom.push(26);
        stackCustom.push(27);
        stackCustom.push(28);
        stackCustom.push(29);
        stackCustom.push(30);
        stackCustom.push(1);
        stackCustom.push(13);


        System.out.println("peek is: "+stackCustom.peek());

        //循环输出
        while(!stackCustom.isEmpty()){
            System.out.println("pop is: "+stackCustom.pop());

        }
    }
}

我们运行一下,测试截图如下, 输出结果:可以看出先插入的后出,后进的先出

 

总结:遇到有LIFO数据存取需求都可以考虑使用这个数据结构来实现。 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Coder_Boy_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值