Java栈结构_栈java

Java栈结构_栈javaJava栈结构概念典型的栈结构如下图所示:栈结构只能在一端操作,该操作端叫做栈顶,另一端叫做栈底。栈结构按照“后进先出”(LastInFirstOut,LIFO)的方式处理结点数据。栈的特点:其实栈结构是一种受限制的线性数据结构。其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Java栈结构

概念

典型的栈结构如下图所示:栈结构只能在一端操作,该操作端叫做栈顶,另一端叫做栈底。栈结构按照“后进先出”(Last In First Out, LIFO)的方式处理结点数据。
在这里插入图片描述

栈的特点:

其实栈结构是一种受限制的线性数据结构。

  • 其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。

  • 向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;

  • 从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

有没有想到我们程序为什么要使用栈?什么程序是栈实现的?

学了这么久的编程, 是否听说过, 函数调用栈呢?

  1. 我们知道函数之间和相互调用: A调用B, B中又调用C, C中又调用D.

  2. 那样在执行的过程中, 会先将A压入栈, A没有执行完, 所有不会弹出栈.

  3. 在A执行的过程中调用了B, 会将B压入到栈, 这个时候B在栈顶, A在栈底.

  4. 如果这个时候B可以执行完, 那么B会弹出栈. 但是B有执行完吗? 没有, 它调用了C.

  5. 所以C会压栈, 并且在栈顶. 而C调用了D, D会压入到栈顶.

  6. 所以当前的栈顺序是: 栈顶A->B->C->D栈顶

  7. D执行完, 弹出栈. C/B/A依次弹出栈.

  8. 所以我们有函数调用栈的称呼, 就来自于它们内部的实现机制. (通过栈来实现的)

清楚了上面这个调用流程就应该知道栈的重要性了吧。在Java中已经跟我们封装好了 Stock类就是栈结构

栈的应用

首先了解一下栈中的常用方法?

  • push(element): 添加一个新元素到栈顶位置.

  • pop():移除栈顶的元素,同时返回被移除的元素。

  • peek():返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)。

  • isEmpty():如果栈里没有任何元素就返回true,否则返回false

  • clear():移除栈里的所有元素。

  • size():返回栈里的元素个数。这个方法和数组的length属性很类似。

知道了栈的一些基本概念之后,接下来就来实操一下。例子:十进制数转成二进制。

在日常中我们都是用十进制数,但是在计算机底层都是用二进制数进行计算。那我们如何用栈来实现?

在这里插入图片描述
在这里插入图片描述

上面涉及到十转二 用到的辗转相除法 不会的可以取了解下,
具体代码处理如下:

public static String SysConvert(int number){ 
   
    Stack<Integer> stack = new Stack<>();
    int remainder;
    // 对十进制数进行取余 将结果放到栈中
    while (number!=0){ 
   
        remainder = number%2;
        number /=2;
        stack.push(remainder);
    }
    String result = "";
    // 最后去栈中数据得出最后二进制结果
    while (!stack.empty()){ 
   
        result += stack.pop();
    }
    return result;
}

栈在程序中还有很多很多用法!!!!自己可以去拓展~~

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196682.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Tarjan_com.pakdata.QuranMajeed

    Tarjan_com.pakdata.QuranMajeedTarjanTarjan是一种求有向图强联通分量的算法,是用dfs实现以及时间戳标记访问最短时间的.Tarjan算法中每个点都需要扩展边,为了存储方便,推荐使用邻接表.Tarjan算法的优势在于其灵活性,基础代码可以直接适用于多数情况.常见于dfs序.

    2025年7月15日
    0
  • 公司这套架构统一处理 try…catch 这么香,求求你不要再满屏写了,再发现扣绩效!

    点击上方“全栈程序员社区”,星标公众号 重磅干货,第一时间送达 作者:小李子说程序 www.toutiao.com/i6878184496945070604 前言 软件开发spri…

    2021年6月28日
    104
  • 开心农场外挂助手_开心农场最新版本下载

    开心农场外挂助手_开心农场最新版本下载开心农场外挂助手,支持校内开心农场、校内开心农民、QQ校友开心农场、开心网001花园、开心网农场作用:1、自动倒计时,到朋友作物即将成熟前提醒你。2、不会错过好友的任何一个水果。偷东西一个都不会少。3、时间支持小时的输入;支持关机倒计时。4、支持自定义声音提醒、图标闪烁提醒使用方法:1、添加数据:直接在表格里填写好友标记、时间(分,最近成熟时间)2、添加完毕后,可最小化(就是X按钮)。去干其他事情…

    2022年9月13日
    0
  • 初识visifire图表「建议收藏」

    初识visifire图表「建议收藏」   在使用过jschart之后,觉得对俺们中国人不是很友善,短时间内是不会支持中文,没法用,也就这样就认识了visifire图表,第一次浏览他的网站就被他的华丽迷上了。   从他的网站上download下来,压缩包里面已经包含了samples。   首先必须在自己的机器上面安装微软的siverlight控件,否则你是不能浏览图表的,这个好办,到微软的网站上下载就可以了。   安装好siv

    2022年7月21日
    11
  • 2022.01.13 激活(JetBrains全家桶)

    (2022.01.13 激活)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.net/100143.html…

    2022年3月31日
    174
  • css3全屏背景图片切换特效

    效果体验:http://hovertree.com/texiao/css3/10/一般做图片切换效果,都会使用JS或者jQuery脚本,今天发现,其实只用CSS也可以实现。试试效果吧。效果图:代码

    2021年12月22日
    44

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号