【java-数据结构15-模拟实现栈的方法】

 上篇文章中,我们已经手动实现了栈,下面,我们将继续手动实现栈的方法~

1.在栈中存放元素

 1.定义一个usedsize,用来临时存放下标

2.当存放一个元素后,下标加一

3.不要忘记判满

如图

代码如下

 判满方法

  public boolean isFull(){return usedSize == elem.length;}

 存放代码

 public void push(int val){if (isFull()){elem = Arrays.copyOf(elem,elem.length*2);}this.elem[usedSize] = val;this. usedSize++;}

调用测试

 public static void main(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);System.out.println();}

运行截图

2.判断栈是否为空

  这个方法很简单,usedsize==0,即为此栈为空

代码如下

 public boolean isEmpty(){return usedSize == 0;}

调用测试

 public static void main(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);System.out.println(myStack.isEmpty());}

运行截图

3.删除栈顶第一个元素 

 其实这个方法非常简单,直接让usedssize--即可,也就我们所谓的删除,并不是真正的删除,而是将其覆盖,如图

注意:不要忘记判满 

代码如下

        

 public int pop(){if(isEmpty()){throw new EmptyException();}int oldVla = elem[usedSize-1];usedSize--;return oldVla;}

调用测试

 public static void main(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);System.out.println(myStack.pop());}

运行截图 

4.返回栈顶元素

原理同上,只是不用删除,直接返回usedSize-1位置的值即可

代码如下

 public int peek(){if(isEmpty()){throw new EmptyException();}return  elem[usedSize-1];}

这里我们用到了自定义异常

public class EmptyException extends RuntimeException{public EmptyException() {}public EmptyException(String message) {super(message);}
}

调用测试

 public static void main(String[] args) {MyStack myStack = new MyStack();myStack.push(1);myStack.push(2);myStack.push(3);myStack.push(4);System.out.println(myStack.peek());}

运行截图 

  到此为止,我们栈方法的模拟实现就到此结束了,下一篇文章,我们将会详细讲解栈的应用场景,敬请期待叭~觉得小编讲的还可以的可以点个关注支持一下~谢谢观看~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/700256.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

BLDC电机基础知识

1、电机工作原理 电机输入的是电能输出机械能,即电机是一种将电能转换为机械能的装置。电机利用磁场的同名磁极互相排斥以及电磁场原理完成电能与机械能的转换。 由物理电磁场理论知识我们知道,磁铁周围存在磁场,同时运动的电荷或通电导线周…

【Cesium解读】Cesium中primitive/entity贴地

官方案例 Cesium Sandcastle Cesium Sandcastle scene.globe.depthTestAgainstTerrain true; True if primitives such as billboards, polylines, labels, etc. should be depth-tested against the terrain surface, or false if such primitives should always be draw…

C语言笔记15

指针2 1.数组名的理解 int arr[ 10 ] { 1 , 2 , 3 , 4 , 5 , 6 , 7 , 8 , 9 , 10 }; int *p &arr[ 0 ];17391692786 arr是数组名&#xff0c;数组名是首元素地址&#xff0c;&arr[0]就是取出首元素的地址放在指针变量p中。 #include <stdio.h> int main()…

Oracle 临时表空间的管理

Oracle 临时表空间的管理 临时表空间的处理 1.创建一个新的temporary tablespace; create temporary tablespace tp tempfile ...... size 10m autoextend on; 2.改变数据库的默认临时表空间 alter database default temporary tablespace tp; 3。drop tablespace temp; …

Python数据分析常用模块的介绍与使用

Python数据分析模块 前言一、Numpy模块Numpy介绍Numpy的使用Numpy生成数组ndarrayarray生成数组arange生成数组random生成数组其他示例 关于randint示例1示例2 关于rand Numpy数组统计方法示例 二、Pandas模块pandas介绍Series示例 DataFrame示例 三、其他模块Matplotlib/Seabo…

【JAVA】数组的定义与使用

前一篇我们讲述了方法的使用和递归&#xff0c;这一讲 我们来叙述一下数组相关知识点。最近更新较快&#xff0c;大家紧跟步伐哦~~ 1. 数组的基本概念 1.1 为什么要使用数组 假设现在要存5个学生的javaSE考试成绩&#xff0c;并对其进行输出&#xff0c;按照之前掌握的知识点&…

uniapp的底部弹出层实现保姆式教程

实现照片&#xff1a; 此过程先进入uniapp官网&#xff0c;找到扩展组件 打开找到里面的uni-popup和uni-icons 点击进入&#xff0c;下载&安装 点击下载并导入HBuilderX 导入到你使用的目录&#xff0c;如test目录 同样将uni-icons点击下载并导入HBuilderX 点击合并 此时te…

运输层(计算机网络谢希仁第八版)——学习笔记五

课件&#xff1a;课程包列表 (51zhy.cn) 目录 运输层协议概述 用户报协议UDP 传输控制协议TCP概述 可靠传输的工作原理 TCP可靠传输的实现 TCP的流量控制 TCP的拥塞控制 TCP的运输连接管理 运输层协议概述 进程之间的通信 运输层的位置——只有位于网络边缘部分的主机的协议栈才…

Jmeter+Grafana+Prometheus搭建压测监控平台

本文不介绍压测的规范与技术指标&#xff0c;本文是演示针对Jmeter如何将压测过程中的数据指标&#xff0c;通过Prometheus采集存储&#xff0c;并在Granfan平台进行仪表盘展示; 介绍 系统压测属于日常项目开发中的一个测试环节&#xff0c;使用测试工具模拟真实用户行为&…

Day 46 139.单词拆分

单词拆分 给定一个非空字符串 s 和一个包含非空单词的列表 wordDict&#xff0c;判定 s 是否可以被空格拆分为一个或多个在字典中出现的单词。 说明&#xff1a; 拆分时可以重复使用字典中的单词。 你可以假设字典中没有重复的单词。 示例 1&#xff1a; 输入: s “leet…

小红书自动私信获客,打造个人品牌

在当今这个内容为王、社交至上的时代&#xff0c;小红书作为新兴的社交电商平台&#xff0c;凭借其独特的社区氛围和强大的种草能力&#xff0c;成为了众多KOL、商家以及个人品牌打造的首选平台。想要在小红书上脱颖而出&#xff0c;精准引流获客&#xff0c;利用自动私信功能不…

国外新闻媒体推广:多元化媒体分发投放-大舍传媒

前言 &#xff1a;随着全球化的进程&#xff0c;国外新闻市场呈现出快速发展的趋势。在这个趋势下&#xff0c;国外新闻媒体推广成为了各行业企业宣传业务的重要一环。本文将重点介绍大舍传媒的多元化媒体分发投放服务&#xff0c;以及对国外新闻媒体推广的意义。 1. 多元化媒…