【数据结构四】栈与Stack详解

目录

栈与Stack

 1.实现一个自己的栈

2.Stack的基本使用

3.栈的一些oj题训练

4.栈,虚拟机栈,栈帧的区别


栈与Stack

:一种特殊的线性表,其 只允许在固定的一端进行插入和删除元素操作 。进行数据插入和删除操作的一端称为栈顶,另一端称为栈底。栈中的数据元素遵守后进先出LIFO Last In First Out )的原则。
压栈:栈的插入操作叫做进栈 / 压栈 / 入栈, 入数据在栈顶
出栈:栈的删除操作叫做出栈。 出数据在栈顶

特点是:后进先出。如图所示

 

 1.实现一个自己的栈

下面是用java实现的栈结构:

import java.util.Arrays;

public class MyStack {
    int[] array;
    int size;
    public MyStack(){
        array=new int[5];
    }
    public int push(int e){
        if(array.length==size){
            grow();
        }
        array[size++]=e;
        return e;
    }
    public int pop(){
        int a=peek();
        size--;
        return a;
    }

    public int peek() {
        if(size==0){
            throw new RuntimeException("栈为空,无法获取栈顶元素");
        }
        return array[size-1];
    }

    public int size(){
        return size;
    }

    public boolean empty(){
        return size==0;
    }
    private void grow() {
        array= Arrays.copyOf(array,array.length*2);
    }
}

2.Stack的基本使用

Java中的Stack继承了Vector,Vector和ArrayList类似,都是动态的顺序表,不同的是Vector是线程安全的。Stack继承了Vector的所有方法,也有一些自己的方法,如下:

3.栈的一些oj题训练

1.括号匹配

2.逆波兰表达式求值

3.出栈入栈次序匹配

4.最小栈

4.栈,虚拟机栈,栈帧的区别

栈是一种先进后出的数据结构。

虚拟机栈是JVM的一块内存空间。

栈帧是在函数的调用过程中,在java虚拟机栈上开辟的一块内存。

相关推荐

  1. 数据结构---(Stack)

    2024-01-25 13:14:01       38 阅读

最近更新

  1. 用户特征和embedding层做Concatenation

    2024-01-25 13:14:01       0 阅读
  2. opencv 设置超时时间

    2024-01-25 13:14:01       1 阅读
  3. Nginx Websocket 协议配置支持

    2024-01-25 13:14:01       1 阅读
  4. Perl语言入门到高级学习

    2024-01-25 13:14:01       1 阅读
  5. 【 HTML基础知识】

    2024-01-25 13:14:01       1 阅读

热门阅读

  1. k8s之安全机制

    2024-01-25 13:14:01       31 阅读
  2. K8S之HPA

    K8S之HPA

    2024-01-25 13:14:01      34 阅读
  3. 根目录逃逸Yaml

    2024-01-25 13:14:01       31 阅读
  4. HJ11 数字颠倒【C语言】

    2024-01-25 13:14:01       33 阅读
  5. linux系统nginx监控的使用

    2024-01-25 13:14:01       39 阅读
  6. P5469 [NOI2019] 机器人 洛谷黑题题解

    2024-01-25 13:14:01       31 阅读
  7. 【笔记】Helm-4 最佳实践-3 模板

    2024-01-25 13:14:01       39 阅读
  8. 使用 git rebase 合并多个 commit

    2024-01-25 13:14:01       32 阅读
  9. openssl3.2/test/certs - 043 - 4096-bit leaf key

    2024-01-25 13:14:01       40 阅读
  10. v-if 导致 elementui 表单校验失效问题解决

    2024-01-25 13:14:01       31 阅读
  11. linux Socket 缓存 介绍

    2024-01-25 13:14:01       34 阅读