当前位置: 首页> 健康> 知识 > 《java数据结构》--栈的详解

《java数据结构》--栈的详解

时间:2025/7/12 6:01:56来源:https://blog.csdn.net/hyldzbg/article/details/139269113 浏览次数:0次

一.栈的认识

栈是一种不同于链表和顺序表的储存数据结构,它对存储数据和取出数据有着特殊的要求🤔。

首先栈只能从一端存储数据,也就是从一端进,还从这一端出这也是栈最大的特点,这也导致在栈中存取数据都必须遵循先进后出的原则😊,即先存入的数据只能最后拿出来,嗯🤔你可以把它想做一个细长的圆桶,你要往里放东西肯定是先放在最下面,当放满这个圆桶后你要再拿出刚开始放的那个,就必须把它上面的东西都拿出来才行。下面我来画图演示一下(画的不好请见谅🦊):

一般我们将栈用来存取的一端叫做栈顶,我们常常说取栈顶元素就是去取离栈顶最近的元素(也就是图中的3),另一端叫做栈底,向栈中存储数据叫做压栈,取出数据叫做出栈。

🐱以上就是关于栈的基本概念,接下来我们来自己实现一个栈,并进行增删查改😊。

二.栈的手动实现

因为栈不像顺序表和链表,可以随便访问到任意一个位置的数据,栈只能对栈顶元素进行操作并且遵循先进后出原则。那具体怎么操作呢🧐,接着看😉。

1.创建栈🐱

栈可以用数组来实现也可以用链表来实现

数组栈:用数组实现比较方便,而且再尾部插入和删除的代价小时间复杂度为O(1),且没有其他额外开销。这种实现方式适合于栈的常见操作,如进栈和出栈,因为这些操作在数组的尾部进行,效率较高。然而,数组的缺点是大小固定,需要预先分配足够的空间,且在栈满时无法动态扩展。

链表栈:可以灵活地添加或删除元素,无需预先分配固定大小的存储空间。链表栈通过维护一个指向栈顶元素的引用(头插,头删),可以实现快速的进栈和出栈操作。然而,链表在实现栈时,每个元素都需要额外的空间来存储指向下一个元素的引用,这可能导致空间上的开销。

具体使用哪种更据具体需要😊

博主这里使用数组来实现栈😊

2.判断是否压满🐱

方法和顺序表一样直接判断数组长度和栈内元素数量是否相同

3.压栈🐱

压栈的操作其实很容易实现首先还是和顺序表一样先判断是否扩容,然后直接在最后插入一个数据即可😉

4.出栈🐱

博主这里设定如果栈为空就抛出一个错误

出栈操作依然简单😸,让数据容量减一,然后返回栈顶元素就行😼

5.获取栈顶元素🐱

到这里你应该已经可以自己完成这个操作了吧😸,试着自己操作一下吧,实现方法和出栈类似。

6.获取长度和判空🐱

7.打印栈的元素🐱

到这里我们栈的内容就聊完了😋,如果你有什么不懂得地方或者其他见解,欢迎在下方评论或者私信博主,最后也希望可以多多支持一下博主🥰🥰!!!下一篇我们来聊一聊队列😸🙉

关键字:《java数据结构》--栈的详解

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: