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 ...
随机推荐
- SAP无法激活表问题
因为修改了表结构导致无法激活,刚开始以为是数据库没有调整,然后试着运行SE14,发现还是报错 这个时候就要看看数据库服务器时候正常,输入事务码ST04,查看概览,发现磁盘已满 登录HANA Studi ...
- 【数学+思维】ZZULIOJ 1531: 小L的区间求和
题目链接 题目描述 在给定的一个整数序列中,小L希望找到一个连续的区间,这个区间的和能够被k整除,请你帮小L算一下满足条件的最长的区间长度是多少. 输入 第一行输入两个整数n.k.(1 <= n ...
- 盘一盘 AQS和ReentrantLock
AQS是个啥? AQS(AbstractQueuedSynchronizer)是Java并发用来构建锁和其他同步组件的基础框架.许多同步类实现都依赖于它,如常用的ReentrantLock/Reent ...
- Mybatis实现一对一查询 对ResultType和ResultMap分析
实现一对一查询: ResultMap:使用ResultType实现较为简单,如果pojo中没有包括查询出来的列名,需要增加 列名对应的属性,即可完成映射. 如果没有查询结果的特殊要求建议使用Resul ...
- Shell-->变量的数值计算
1.----------------------------->>>>>文件改名,使用命令mv 2.----------------------------->&g ...
- Linux--shell的awk--10
一.awk介绍 全称:由Aho Weinberger Kernaighan三个人的首字母组合而成 1970年第一次出现在Unix机器上,后来在开源领域使用它 awk是一种单独的编程语言解释器 awk报 ...
- 设计模式(C#)——09外观模式
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 前言 在软件开发过程中,客户端程序经常会与复杂系统的内部子系统进行耦合,从而导致客户端程序随着子系统的变化而变化,然 ...
- 命令行通过入参调用jar包
命令行通过入参调用jar包 最近因为项目需要,需要实现一个功能,即定时执行服务器上的一个脚本去对数据库的数据进行业务处理,要操作的数据库有很多种,mysql.db2.oracle.sqlserver等 ...
- C++ socket bind()函数报错 不存在从 "std::_Binder<std::_Unforced, SOCKET &, sockaddr *&, size_t &>" 到 "int" 的适当转换函数
昨天还可以正常运行的程序,怎么今天改了程序的结构就报错了呢?我明明没有改动函数内部啊!!! 内心无数只“草泥马”在奔腾,这可咋办呢?于是乎,小寅开始求助于亲爱的度娘...... 由于小寅知识水平有限, ...
- Java多线程的中断原理和 interrupt() 几个方法简介
上节讲到,线程被 wait() 通知后进入等待池,可以由本线程的 interrupt() 方法解救,使本线程可以去重新竞争锁等等.是如何实现的呢? 实际上,中断仅仅是在线程对象做一个标记而已,称为中断 ...