05.栈

作者: 学海一乌鸦 | 来源:发表于2020-05-21 01:11 被阅读0次

1.基础概念

一句话总结:先进者后出,后进者先出
深层理解:是一种操作受限的线性结构,只能在一端插入和删除数据。
特定的数据结构是对特定场景的抽象。其功能数组和链表也可以实现,不过问题是对外暴露的接口越多,越容易出错。

2.实现

用数组实现

public class ArrayStack {
    private String[] items;// 数组
    private int count;// 元素个数
    private int size;// 容量

    public ArrayStack(int size) {
        this.size = size;
        this.count = 0;
        this.items = new String[size];
    }

    // 入栈
    public boolean push(String item) {
        if (count == size) {
            return false;
        }
        items[count] = item;
        count++;
        return true;
    }

    // 出栈
    public String pop() {
        if (count == 0) {
            return null;
        }
        // 返回下标为count-1的元素
        String itemPop = items[count - 1];
        count--;
        return itemPop;

    }

    public static void main(String[] args) {
        ArrayStack arrayStack=new ArrayStack(10);
        arrayStack.push("hello");
        arrayStack.push("world");
        System.out.println(arrayStack.toString());
        System.out.println(arrayStack.pop());
        System.out.println(arrayStack.pop());
    
    }
}

时间复杂度:O(1)。
空间复杂度:O(1)。当我们说空间复杂度的时候,是指除了原本的数据存储空间外,算法运行还需要额外的存储空间。

相关文章

  • 05.栈

    1.基础概念 一句话总结:先进者后出,后进者先出。深层理解:是一种操作受限的线性结构,只能在一端插入和删除数据。特...

  • 05.栈练习题

    1.有效的括号 https://leetcode-cn.com/problems/valid-parenthese...

  • 05.路由 (Vue全栈开发学习笔记)

    各个知识点整理: 1.重定向 router/index.js: 2.子路由与具名路由 router/index.j...

  • 你可以相信我一回吗

    -2019​.05.​05-

  • 徐志摩:好久不见!

    01. 03. 05.

  • Update: CANBus Example

    05. October 2016 Release date: 05.10.2016The new version ...

  • 05.

    故事的走向有些不一样,我不知道谎言还能否撑过天亮。

  • 05.

    一、化解尴尬的核心尴尬是压力环境下一种感受。把它说出来,尴尬就没了。教育孩子要用正向的语言或者给孩子选择。小技巧:...

  • 05.局部变量表与操作数栈

    1) 概述 JVM的字节码执行引擎,功能基本就是输入字节码文件,然后对字节码进行解析并处理,最后输出执行的结果。 ...

  • 初二的物理笔记

    这本笔记本现在还留着 2010.04.—05.

网友评论

      本文标题:05.栈

      本文链接:https://www.haomeiwen.com/subject/nyfaohtx.html