java 顺序栈_Java实现顺序栈

一、分析

栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表。

顺序栈是指利用顺序存储结构实现的栈,即利用一组地址连续的存储单元依次存放自栈底到栈顶的数据元素,同时附设指针top指示栈顶元素在顺序栈中的位置。

一个标准的顺序栈具有如下基本操作:

1、初始化顺序栈

2、销毁顺序栈

3、清空顺序栈

4、检测顺序栈是否为空

5、返回顺序栈中的元素个数

6、返回顺序栈的栈顶元素,不修改栈顶指针

7、向顺序栈顶中压入元素

8、从顺序栈顶中弹出元素

9、从栈底到栈顶遍历顺序栈

在Java中,可以将整个顺序栈定义成一个类,类中定义有一个数组类型的属性表示顺序存储结构来存储元素,再定义一个int类型的属性top来作为指针指示栈顶元素在数组中的位置,顺序栈的基本操作则定义成类的方法。初始化顺序栈即实例化类,销毁顺序栈即销毁实例化出来的对象。

二、实现

1、定义类属性和构造函数

1 classInitStack{2

3 private int [] stack = null;     //存储元素

4

5 private int top = 0;          //指示栈顶元素在顺序栈中的位置

6

7 public InitStack(int max) {      //初始化自定义大小的顺序栈

8 this.stack = new int[max];9 }10 }

2、清空顺序栈

1 public voidclearStack() {2 this.top = 0;         //直接令栈顶指针指向栈底即可

3 }

3、检测顺序栈是否为空

1 public booleanstackEmpty() {2 if(this.top == 0) {       //检测栈顶指针是否指向栈底即可

3 return true;4 }else{5 return false;6 }7 }

4、返回顺序栈中的元素个数

1 public intstackLength() {2 return this.top;       //栈顶指针的值即代表了元素个数

3 }

5、返回顺序栈的栈顶元素,不修改栈顶指针

1 public int[] getTop() {2

3 if (this.top == 0) {       //如果顺序栈为空,则返回空

4 return null;5 }6

7 int [] i = new int[1];8 i[0] = stack[this.top - 1];   //获取栈顶元素

9

10 returni;11 }

6、向顺序栈顶中压入元素

1 public boolean push(intvalue) {2

3 if(this.top == this.stack.length) {   //判断顺序栈是否已满

4 return false;5 }6

7 this.stack[this.top] = value;       //压入元素

8 this.top++;                 //栈顶指针加一

9 return true;10 }

7、从顺序栈顶中弹出元素

1 public int[] pop() {2

3 if (this.top == 0) {     //判断顺序栈是否已空

4 return null;5 }6

7 int [] i = new int[1];8 this.top--;           //栈顶指针减一

9 i[0] = stack[this.top];   //获取栈顶元素

10 returni;11 }

8、从栈底到栈顶遍历顺序栈

1 public String stackTraverse() {           //通过输出顺序栈元素来表示遍历

2

3 String s = "";                   //存储要输出的元素

4

5 for (int i = 0; i < this.top; i++) {     //循环遍历

6 s += this.stack[i] + "、";7 }8

9 if(s.length() == 0) {              //如果未获取到元素,返回空字符串

10 returns;11 }12

13 return s.substring(0,s.length() - 1);    //除去最后一个顿号后返回

14 }

三、小结

以上就是顺序栈用Java的实现,由于只定义了整数的数组,因此只能操作整数数据,但顺序栈的基本思想都已实现。

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

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

相关文章

Spring IO platform

什么是Spring IO PlatformSpring IO Platform&#xff0c;简单的可以认为是一个依赖维护平台&#xff0c;该平台将相关依赖汇聚到一起&#xff0c;针对每个依赖&#xff0c;都提供了一个版本号&#xff0c;这些版本对应的依赖都是经过测试的&#xff0c;可以保证一起正常使用。…

二十多岁不信,三十多岁却深信不疑的道理

1.那些年偷的懒、荒废的时间、败坏的身体&#xff0c;都&#xff01;得&#xff01;还&#xff01; 年轻的时候心比天高&#xff0c;以为自己能干出一番大事业&#xff0c;后来慢慢意识到自己只是个普通人。 2.不和讲道理。 3.原来被嗤之以鼻的门当户对是有一定道理的。 4.以貌…

javascript === 和==的区别

原文链接&#xff1a;https://blog.csdn.net/seven_amber/article/details/62889290 -------------------------------------------------------------------- 用于比较 判断 两者相等 在比较的时候可以转自动换数据类型用于严格比较 判断两者严格相等 严格比较…

authentication java_HTTP基本认证(Basic Authentication)的JAVA实例代码

大家在登录网站的时候&#xff0c;大部分时候是通过一个表单提交登录信息。但是有时候浏览器会弹出一个登录验证的对话框&#xff0c;如下图&#xff0c;这就是使用HTTP基本认证。下面来看看一看这个认证的工作过程:第一步:客户端发送http request 给服务器,服务器验证该用户是…

Python数据分析入门(四)

前言上期给大家分享了关于豆瓣5500部电视剧的分析&#xff0c;那么这次我们就给吃货们带来一些福利&#xff0c;此次我们的主题为“寻找最好吃的火锅”。进入主题之前&#xff0c;先给所有的吃货们带来一桌美味的火锅&#xff0c;作为各位看官的前菜。数据采集此次我们采集的是…

微信开发者工具下载

https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html

java continue goto_Java中goto和break、continue实现区别

goto 关键字很早就在程序设计语言中出现。事实上&#xff0c;goto 是汇编语言的程序控制结构的始祖&#xff1a;“若条件 A&#xff0c;则跳到这里&#xff1b;否则跳到那里”。若阅读由几乎所有编译器生成的汇编代码&#xff0c;就会发现程序控制里包含了许多跳转。然而&#…

Linux VirtualBox安装及使用指南

2019独角兽企业重金招聘Python工程师标准>>> VirtualBox是一款虚拟机软件。虽然它的功能并不及VMware Workstation Pro&#xff0c;但它对开源精神的坚持使得它在Linux中依然深受欢迎。 唯一难以令人接受的是&#xff0c;VirtualBox的安装步骤较为复杂。不过&#x…

java web vm_java web .vm文件??

在JavaWeb项目中有很多.vm文件&#xff0c;打开以后是类似于.NETMVC项目中的.cshtml文件的形式#if($linkList)#set($itemsOnLine0)#foreach($linkin...在Java Web项目中有很多.vm文件&#xff0c;打开以后是类似于.NET MVC项目中的.cshtml文件的形式#if($linkList)#set ($items…

Android studio gradle 无法获取 pom文件

Android studio 3.1 导入app项目后&#xff0c;gradle无法获取 pom文件 具体保存内容如下&#xff1a; Could not GET https://dl.google.com/dl/android/maven2/com/android/tools/build/transform-api/2.0.0-deprecated-use-gradle-api/transform-api-2.0.0-deprecated-use-g…

生产环境linux下安装两个及两个以上tomcat实践

前言: 在生产环境部署程序项目中&#xff0c;有时候由于服务器紧张或缺少服务器等原因,往往都需要安装两个及两个以上tomcat。我们需要在/etc/profile中增加tomcat的环境变量&#xff0c;然后在新增加的tomcat的bin目录下的catalina.sh中引用自己在/etc/profile中配置的环境变量…

java 内存 四_java最终化的内存保留问题(4)

四、一种代替最终化的选择在前面一节中的示例还存在一种不确定性可能&#xff1a;JVM并不能保证它在最终化队列中调用对象的终结器的顺序。而来自于所有类(应用程序&#xff0c;库&#xff0c;等等)的终结器都是被同等对待的。因此&#xff0c;一个占有大量内存或一种稀有的本地…

基于Spring Boot不同的环境使用不同的配置方法

原文路径&#xff1a;http://www.jb51.net/article/132589.htm ---------------------------------------- 默认是profile为dev&#xff0c;可以修改 spring 多文件配置&#xff1a; 1、properties文件 2、YAML文件 一、properties文件 在 Spring Boot 中&#xff0c; 多环境配…

java set方法赋值_java方面:private属性,没有set方法,只有get方法,如何给这个属性赋值?...

富国沪深用反射吧&#xff0c;然后设置setAccessible为true就可以了&#xff0c;如下&#xff1a;public class Test {private String readOnly;public String getReadOnly() {return readOnly;}public static void main(String[] args) throws SecurityException, NoSuchField…

SpringBoot项目在IntelliJ IDEA中实现热部署

spring-boot项目热部署idea工具&#xff1a; &#xff08;1&#xff09;、pom文件引入&#xff1a;都需要为true<!-- 热部署模块 --> <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId…

java nio 对消息分片_Java NIO:应用

Java NIO 是一种非阻塞的、面向块而非字节的 IO 方式。虽然 Java 的传统 IO 也进行了一些基于 NIO 的改造&#xff0c;NIO 仍然能够带来许多优势。面向流的 IO 方便我们一个字节一个字节地处理数据&#xff0c;有利于实现过滤等功能&#xff0c;更加优雅和简单。相应地&#xf…

使用Notepad++来比较文件

原文连接&#xff1a;https://blog.csdn.net/sanqima/article/details/50467154 -----------------------------------------------------------------------------Notepad&#xff0c;也叫npp&#xff0c;是一款类似于记事本的开源小软件。它运行便携&#xff0c;体积小、资源…

利用lamda函数 的函数式编程 实现scrapy审计外网安全问题

2019独角兽企业重金招聘Python工程师标准>>> import scrapy from scrapy.spiders import Spiderdef parse_response(response, ip_in):title response.xpath("/html/head/title").extract()[0]filename quotes.txtwith open(filename, a) as f:f.write(…

Linux服务器上新增开放端口号

原文连接&#xff1a; https://blog.csdn.net/u012562106/article/details/52882666 ---------------------------------------开放端口的方法&#xff1a; 方法一&#xff1a;命令行方式 1. 开放端口命令&#xff1a; /sbin/iptables -I INPUT -p tcp --dport 8…

return ,continue,break的用法与区别总结

1、return 语句的作用 (1) return 从当前的方法中退出,返回到该调用的方法的语句处,继续执行。 (2) return 返回一个值给调用该方法的语句&#xff0c;返回值的数据类型必须与方法的声明中的返回值的类型一致&#xff0c;可以使用强制类型转换来是数据类型一致。 (…