数据结构栈的简单实现(JAVA)
新的改变
栈是线性数据结构的一种,相当于一个箱子,如果向往箱子里放书,第一本书肯定是放入箱底,但是取出来的时候是从最上面开始取的,并拿不到最里面的东西,所以元素是先进后出的,栈最上面的元素为栈顶元素。
以下是基于数组对栈的简单实现
package com.jym.stack;public class MyStack {private int[] elements;//初始化数组public MyStack() {this.elements = new int[0];}//进栈public void push(int element){//创建一个新数组 int[] newArr = new int[elements.length+1];//把原数组替换进新数组for (int i = 0; i < elements.length; i++) {newArr[i] = elements[i];}//最后的元素为进栈元素newArr[elements.length] = element;elements = newArr;}public int Poo(){//空栈抛出异常if(elements.length==0){throw new RuntimeException("stack is empty");}//最后元素为出栈元素int poo = elements[elements.length-1];//copy到新数组int[] newArr = new int[elements.length-1];for (int i = 0; i < newArr.length; i++) {newArr[i] = elements[i];}elements = newArr;return poo;}public boolean stackIsEmpty(){return elements.length==0;}public int getPoo(){if(elements.length==0){throw new RuntimeException("stack is empty");}return elements[elements.length-1];}}
测试代码:
package com.jym.test;import com.jym.stack.MyStack;public class Main {public static void main(String[] args) {MyStack ms = new MyStack();ms.push(9);//进栈 9 8 7ms.push(8);ms.push(7);System.out.println(ms.Poo()+"出栈");//出栈System.out.println(ms.stackIsEmpty());System.out.println(ms.Poo()+"出栈");System.out.println("当前栈顶元素为"+ms.getPoo());//查看栈顶元素System.out.println(ms.Poo()+"出栈");System.out.println(ms.stackIsEmpty());}}
测试结果:
感谢您的观看!!
数据结构栈的简单实现(JAVA)相关推荐
- 栈的top指针指向哪里_数据结构-栈
数据结构-栈 更简单的介绍,在<程序是怎样跑起来的>一书中有简要形象的说明 一.栈的基本概念 栈是一种特殊的线性表,其插入删除操作都只能在表的尾部进行. 栈中允许插入.删除操作的一端称为栈 ...
- 基于java的数据结构学习——数组实现的栈以及简单应用C++实现
基于java的数据结构学习--数组实现的栈以及简单应用的 C++ 实现 源码: // // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTUR ...
- 数据结构笔记--栈的总结及java数组实现简单栈结构
杂谈"栈"结构: 栈(Stack)是一种插入删除操作都只能在一个位置上进表,这个位置位于表的末端,叫做栈顶(Top). 对栈的基本操作有push和pop,表示进栈和出栈.也就相当于 ...
- 基于java的数据结构学习——数组实现的栈以及简单应用
栈 Stack 栈是一种线性结构 相比数组,栈对应的操作是数组的子集 只能从一端添加元素,也只能从一端取出元素 这一端称为栈顶 栈是一种后进先出的数据结构 栈的应用 无处不在的Undo操作(撤销) 括 ...
- java语言链栈_Java语言实现数据结构栈代码详解
近来复习数据结构,自己动手实现了栈.栈是一种限制插入和删除只能在一个位置上的表.最基本的操作是进栈和出栈,因此,又被叫作"先进后出"表. 首先了解下栈的概念: 栈是限定仅在表头进行 ...
- 8皇后以及N皇后算法探究,回溯算法的JAVA实现,非递归,数据结构“栈”实现
是使用递归方法实现回溯算法的,在第一次使用二维矩阵的情况下,又做了一次改一维的优化 但是算法效率仍然差强人意,因为使用递归函数的缘故 下面提供另一种回溯算法的实现,使用数据结构"栈" ...
- 【数据结构】栈的简单理解以及对栈的基本操作
一.静态栈的简单操作 先来简单的了解一下栈 1.栈:一种特殊的线性表,其实只允许在固定的一端进行插入或删除操作.进行数据插入和删除的一端称为栈顶,另一端称为栈底.不含任何元素的栈称为空栈,栈又称为 后 ...
- 大话数据结构(五)——栈的两种java实现方式
在我们生活当中经常会看到这样一种操作,比如我们往一个空羽毛球盒子里面放羽毛球(个人比较喜欢羽毛球,嘿嘿),放完后再将羽毛球一个一个取出的时候会发现,最先放进去的羽毛球往往最后才取出来,相反,最后放入的 ...
- 数据结构栈队列链表数组
目录: 数据结构 栈(stack) 队列 链表 数组 数据结构 数据结构是什么 简单来说,数据结构就是设计数据以何种方式存储在计算机中 比如:列表,集合,与字典等都是一种数据结构 程序 = 数据结构 ...
最新文章
- mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...
- 直方图和直条图_绘图专题 | 条形图/直方图傻傻分不清楚
- 在.Net Core 3.0中尝试新的System.Text.Json API
- leetcode337. 打家劫舍 III(dfs)
- RabbitMq(十五)消息的追踪查看配置及查看方法
- 华为百度美团驰援抗击疫情;自由软件基金会建议开源 Windows 7;印度超越美国成第二大智能手机市场 | 极客头条...
- 杭电多校HDU 6601 Keen On Everything But Triangle(主席树)题解
- Web前端大作业 HTML+CSS+JS 防天天生鲜官网 9页 (1)
- Pinterest和Instagram哪个更好用?姐妹还是天敌...
- 【Python数据分析】二手车价格预测
- 为什么电脑桌面无计算机图标,我的电脑桌面图标都没名字了为什么
- nodejs 项目目录结构设计
- 单片机c语言编写一个时钟程序,单片机基于c语言编写时钟.doc
- jzoj 4399: 加减乘除模五则运算
- Q版人物动作怎么画?如何画好Q版人物动作?
- 80+的AI音频工具你值得拥有
- oracle左关联+号表示方式
- 王道数据结构p41——22
- python import和from xx import xx的理解
- 【应急响应】Linux应急响应的姿势