当前位置: 首页 > news >正文

【数据结构四】栈与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虚拟机栈上开辟的一块内存。

相关文章:

  • 05.领域驱动设计:认识领域事件,解耦微服务的关键
  • openssl3.2/test/certs - 074 - CT entry
  • Spring MVC 基本知识
  • 【Docker】Docker学习⑨ - 单机编排之Docker Compose
  • 嵌入式学习第十三天
  • 林浩然的Java奇幻之旅:编码舞蹈、编程精灵与IDE仙境
  • ###C语言程序设计-----C语言学习(6)#
  • 【运维】Ubuntu18.04系统docker方式安装ElasticSearch和kibana
  • Linux CPU 负载说明
  • 在linux、window环境搭建kafka环境
  • C语言——O / 动态内存管理
  • 实习记录——第五天
  • 一些反序列化总结
  • C语言指针进阶之三——函数指针、函数指针数组、指向函数指针数组的指针
  • kali系统入侵电脑windows(win11系统)渗透测试,骇入电脑教学
  • 【Linux系统编程】快速查找errno错误码信息
  • ComponentOne 2017 V2版本正式发布
  • IndexedDB
  • iOS 颜色设置看我就够了
  • javascript 总结(常用工具类的封装)
  • Laravel深入学习6 - 应用体系结构:解耦事件处理器
  • LeetCode算法系列_0891_子序列宽度之和
  • MySQL几个简单SQL的优化
  • Zepto.js源码学习之二
  • 给第三方使用接口的 URL 签名实现
  • 技术胖1-4季视频复习— (看视频笔记)
  • 区块链共识机制优缺点对比都是什么
  • 湖北分布式智能数据采集方法有哪些?
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • #[Composer学习笔记]Part1:安装composer并通过composer创建一个项目
  • (Java)【深基9.例1】选举学生会
  • (Mirage系列之二)VMware Horizon Mirage的经典用户用例及真实案例分析
  • (Redis使用系列) SpringBoot中Redis的RedisConfig 二
  • (二)丶RabbitMQ的六大核心
  • (附源码)ssm高校实验室 毕业设计 800008
  • (最简单,详细,直接上手)uniapp/vue中英文多语言切换
  • ******IT公司面试题汇总+优秀技术博客汇总
  • ****Linux下Mysql的安装和配置
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .CSS-hover 的解释
  • .net core 控制台应用程序读取配置文件app.config
  • .net 托管代码与非托管代码
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .Net转Java自学之路—SpringMVC框架篇六(异常处理)
  • .xml 下拉列表_RecyclerView嵌套recyclerview实现二级下拉列表,包含自定义IOS对话框...
  • @property python知乎_Python3基础之:property
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [C#小技巧]如何捕捉上升沿和下降沿
  • [Godot] 3D拾取
  • [JavaWeb]——获取请求参数的方式(全面!!!)
  • [Linux] PHP程序员玩转Linux系列-telnet轻松使用邮箱
  • [Mac软件]Goldie App v2.2 Mac黄金比例设计工具
  • [SharePoint][SharePoint Designer 入门经典]Chapter13 客户端Silverlight编程
  • [svc]caffe安装笔记