前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Java栈结构_栈java

Java栈结构_栈java

作者头像
全栈程序员站长
发布2022-10-04 12:56:28
5620
发布2022-10-04 12:56:28
举报
文章被收录于专栏:全栈程序员必看

大家好,又见面了,我是你们的朋友全栈君。

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属性很类似。

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

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

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

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

代码语言:javascript
复制
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;
}

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

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年9月6日 下,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Java栈结构
    • 概念
      • 栈的特点:
        • 栈的应用
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档