4.1、顺序栈的实现(java实现)
1、实现源码
public class SeqStack {
private final int MaxSize = 8;
private int top; //栈顶
private Object stack[];
/**
* 初始化
*/
public SeqStack() {
this.top = 0;
this.stack = new Object[MaxSize];
}
/**
* 是否为空
* @param seqStack :要判断的堆栈
* @return true :空 false:未空
*/
private boolean isEmpty(SeqStack seqStack){
if (seqStack.top <= 0){
return true;
}
return false;
}
/**
* 是否已满
* @param seqStack :要判断的堆栈
* @return : true :满 false:空
*/
private boolean isFull(SeqStack seqStack){
if (seqStack.top >= MaxSize){
return true;
}
return false;
}
/**
*入栈
* @param seqStack :要入栈的堆栈
* @param element :入栈数据
*/
private void stackPush(SeqStack seqStack,Object element){
if (isFull(seqStack)){
System.out.println("堆栈已满无法插入");
return;
}
seqStack.stack[seqStack.top] = element;
System.out.println(element + " 已入栈");
seqStack.top++;
}
/**
* 出堆栈
* @param seqStack : 要出栈的堆栈
*/
private void stackPop(SeqStack seqStack){
if (isEmpty(seqStack)){
System.out.println("空堆栈无可出的元素");
return;
}
seqStack.top--;
System.out.print(seqStack.stack[seqStack.top] + " ");
}
/**
* 取栈顶元素
* @param seqStack :要取栈顶元素的堆栈
*/
private void stackTop(SeqStack seqStack){
if (isEmpty(seqStack)){
System.out.println("空堆栈,无栈顶元素");
return;
}
System.out.println("取栈顶元素值 :"+ seqStack.stack[seqStack.top - 1]);
}
public static void main(String[] args) {
SeqStack seqStack = new SeqStack();
seqStack.stackPop(seqStack);
seqStack.stackTop(seqStack);
for (int i = 0; i < 9; i++) {
seqStack.stackPush(seqStack,i);
}
seqStack.stackTop(seqStack);
int number = seqStack.top;
System.out.print("元素出栈: ");
for (int i = 0; i < number; i++) {
seqStack.stackPop(seqStack);
}
}
}
2、测试结果
空堆栈无可出的元素
空堆栈,无栈顶元素
0 已入栈
1 已入栈
2 已入栈
3 已入栈
4 已入栈
5 已入栈
6 已入栈
7 已入栈
堆栈已满无法插入
取栈顶元素值 :7
元素出栈: 7 6 5 4 3 2 1 0
4.1、顺序栈的实现(java实现)的更多相关文章
- 数据结构Java实现05----栈:顺序栈和链式堆栈
一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...
- [Java算法分析与设计]--顺序栈的实现
在程序的世界,栈的应用是相当广泛的.其后进先出的特性,我们可以应用到诸如计算.遍历.代码格式校对等各个方面.但是你知道栈的底层是怎么实现的吗?现在跟随本篇文章我们来一睹它的庐山真面目吧. 首先我们先定 ...
- 数据结构——Java实现顺序栈
一.分析 栈是限定仅在表的一端进行插入或删除操作的线性表,对于栈来说,操作端称为栈顶,另一端则称为栈底,栈的修改是按照后进先出的原则进行的,因此又称为后进先出的线性表. 顺序栈是指利用顺序存储结构实现 ...
- 数据结构Java实现03----栈:顺序栈和链式堆栈
一.堆栈的基本概念: 堆栈(也简称作栈)是一种特殊的线性表,堆栈的数据元素以及数据元素间的逻辑关系和线性表完全相同,其差别是线性表允许在任意位置进行插入和删除操作,而堆栈只允许在固定一端进行插入和删除 ...
- 使用JAVA数组实现顺序栈
1,首先总结一下线性表(分为顺序表和链接表,[即顺序存储结构和链式存储结构的区别])和栈(顺序栈和链接栈)还有队列(顺序队列和链接队列)的JAVA类库中的实现: java.util.ArrayList ...
- java 实现简单的顺序栈
package com.my; import java.util.Arrays; /** * 顺序栈 * @author wanjn * */ public class ArrayStack { pr ...
- Java栈之顺序栈存储结构实现
一.栈的基本定义 栈是一种数据结构,它代表一种特殊的线性表,这种线性表只能在固定一端(通常认为是线性表的尾端)进行插入.删除操作的特殊线性表,通常就是在线性表的尾端进行插入.删除操作. 二.顺序栈的实 ...
- 顺序栈--Java实现
/*栈和队列:逻辑结构属于操作受限的线性表 *栈:特点先进后出,只允许在栈顶操作 *栈的实现方式:顺序栈和链栈 *常见的操作:进栈,出栈,获取栈顶,判空,判满,栈的容量 *栈的应用 *1.逆序相关操作 ...
- 顺序栈,链栈,队列java实现
顺序栈 /** * 顺序栈 * */ public class SqStack { //栈的大小 private int maxSize; //栈顶指针 private int top; privat ...
- Java的顺序栈和链式栈
栈的定义 栈是限制在表的一段进行插入和删除的运算的线性表,通常能够将插入.删除的一端为栈顶,例外一端称为栈底,当表中没有任何元素的时候称为空栈. 通常删除(又称"退栈")叫做弹出p ...
随机推荐
- DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553)
DedeCMS 5.7 sp1远程文件包含漏洞(CVE-2015-4553) 一.漏洞描述 该漏洞在/install/index.php(index.php.bak)文件中,漏洞起因是$$符号使用不当 ...
- tk.mybatis扩展通用接口
一.tk.mybatis已经为我们封装好了许多拆箱即用的通用mapper,但在实际的项目开发中想必不少小伙伴在数据库设计中都会采用逻辑删除这种方案,再去使用通用的mapper接口就不行了.这时候就需要 ...
- java之异常详解
一.什么是异常? 异常就是有异于常态,和正常情况不一样,有错误出错.在java中,阻止当前方法或作用域正常运行的情况,称之为异常. 二.异常体系 Java把异常当作对象来处理,并定义一个基类java. ...
- spring-boot-plus快速开始 Quick Start(一)
spring-boot-plus快速开始 Quick Start 1. clone项目到本地 shell script git clone git@github.com:geekidea/spring ...
- 《深入理解Java虚拟机》- JVM如何进行异常处理
一.Java异常 在程序中,错误可能产生于程序员没有预料到的各种情况,或者超出程序员可控范围的环境,例如用户的坏数据.试图打开一个不存在的文件等.为了能够及时有效地处理程序中的运行错误,Java 专门 ...
- JavaScript在web自动化测试中的作用
前言 JS的全称JavaScript,是一种运行在浏览器中的解释型脚本语言,通常用来实现web前端页面的基本功能,对于前端开发人员是不得不掌握的一门基本技能,但是对于做web自动化测试的人员来说,如果 ...
- java高并发系列 - 第31天:获取线程执行结果,这6种方法你都知道?
这是java高并发系列第31篇. 环境:jdk1.8. java高并发系列已经学了不少东西了,本篇文章,我们用前面学的知识来实现一个需求: 在一个线程中需要获取其他线程的执行结果,能想到几种方式?各有 ...
- Redis学习总结(九)-- Redis常用技巧
这里会记录下Redis 常用的小技巧 全局使用 redis-cli 等命令 在之前我们都在做 Redis 命令目录下通过 ./redis-cli这种形式访问,如果使用 redis-cli 的话就会报命 ...
- Leetcode之回溯法专题-47. 全排列 II(Permutations II)
Leetcode之回溯法专题-47. 全排列 II(Permutations II) 给定一个可包含重复数字的序列,返回所有不重复的全排列. 示例: 输入: [1,1,2] 输出: [ [1,1,2] ...
- MSIL实用指南-返回结果
一个方法体执行完指令后,必须要完成调用并返回,这是要使用Ret指令.Ret指令的详细解释是从当前方法返回,并将返回值(如果存在)从被调用方的计算堆栈推送到调用方的计算堆栈上.就是说如果计算堆栈上没有变 ...