专栏首页CoffeeLandStack Stracture
原创

Stack Stracture

Stack definition

stack是限定仅在表尾进行插入和删除操作的线性表

或者

stack是限定在只能在栈顶进行插入和删除操作的线性表

Stack Features

Last in First Out

Underlying principle inside the stack

stack是一个有顺序的线性表,既然是线性表,底层是数组,

Because stack是Last in first out. 因此数组的index是0最适合做栈底, 因为变化最小

Source code of the Stack


Stack class Diagram

class Stack<E> extends Vector<E>

Stack Method

Implement stack structure with Java

package com.coffeland.test;

public class Stack
{
    int Max = 5;
    int top;
    Object[] arr = new Object[5];

    Stack(int maxSize)
    {
        this.Max = maxSize;
        top = -1;
    }

    boolean push(int val)
    {
        // can not push the element into stack if the
        if (top >= (Max-1))
            return false;
        else
        {
            top = top +1;
            arr[top] = val;
            System.out.println(val + " pushed into stack");
            return true;
        }
    }

    Object pop()
    {
        if(top < 0)
            return -1;
        else
        {
            arr[top--] = null;
            return peek();
        }
    }

    Object peek()
    {
        return arr[top];
    }

    void printArr()
    {
        for(Object elem : arr)
        {
            System.out.print (elem + " ");
        }
        System.out.println("-------------------------");
    }

    public static void main(String[] args) {
        Stack s = new Stack(5);
        s.push(10);
        s.push(20);
        s.push(30);
        s.printArr();
        s.pop();
        s.printArr();
    }
}

output:

20 pushed into stack
30 pushed into stack
10 20 30 null null -------------------------
top = 1
10 20 null null null -------------------------

Process finished with exit code 0

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Java测试框架推荐

    java有很多测试类框架, 开发中有很多比如Mokito, powermock, wiremock, cucumber ,但是powermock测试,sonar...

    CoffeeLand
  • 系统问题解决之tcpdump

    tcpdump: any: You don't have permission to capture on that device

    CoffeeLand
  • 分布式系统互斥性与幂等性问题的分析与解决

    ReentrantLock主要利用CAS+CLH队列来实现。它支持公平锁和非公平锁,两者的实现类似。

    CoffeeLand
  • 出栈顺序问题的一般解决方法

    KevinBruce
  • Vue路由模块化

    之前的项目从来没有对路由进行模块化,很早之前一个同学发过一个项目,我当时看了路由,觉得很不错,那就是进行了模块化,只是都没去认真了解一下。今天分享个vue的路由...

    wade
  • Nacos源码分析系列之Naming模块-如何运行篇

    Naming模块其实Nacos框架实现服务治理功能的核心模块,这个模块具备很多核心功能,本次先从如何运行开始剖析。

    用户6969969
  • 紫光楚庆:集成电路的新旧格局变动下,存储、移动、5G芯片都重要

    当大家都在遗憾摩尔定律失效时,全球的集成电路在2018年迎来了重大的转折点,重大市场案例频出,让国内国际市场都经受着不同程度的考验。

    镁客网
  • GitHub中的Pull Request和Pulse详解

    Pull Request是用户修改代码后向对方仓库发送采纳的请求功能,也是GitHub的核心功能,正式因为有了这个功能,才会让众多开发者轻松地加入到开源开发的队...

    Dunizb
  • 插件:商品放大镜

    这段代码我哩哩啦啦写了三天多,平时都有活今天忙里偷闲想起之前放大镜这个功能写了一半(我是分两块写的, 先是让module就是那个遮罩层能自由的在图片上跟随鼠标走...

    yuezhongbao
  • Hacking Team遭遇了大型数据攻击泄漏事件

    2015年7月5日,Hacking Team遭遇了大型数据攻击泄漏事件。 Hacking Team的官方推特被黑,官方主页面的banner更名为“Hacked...

    洛米唯熊

扫码关注云+社区

领取腾讯云代金券