数据结构&与算法&栈

谁借莪1个温暖的怀抱¢ 2024-04-03 10:37 200阅读 0赞

(栈)&队列

一:什么是栈?

stack是一种特殊的线性数据集合,只准许在栈顶进行操作元素,在栈顶加入(push())在栈顶删除(pop()),采取是的先进后出的原则。

8c16972ce62cd1fdd34d4881ee4803cf.png

二:栈按存储结构又分为哪两种?

  1. 栈底层结构为一维数组就是顺序栈,在JAVA中使用java.until.Stack类来实现的
  2. 栈底层结构为链表时就是链式栈, 是用列表Linkedlist来实现的

b153fcfd371b0e1841a783f678345d28.png

三:那么顺序栈与链栈有什么区别?

  • 对于顺序栈(Stack)栈来说,它是vector的子类。底层是通过一个数组来实现的,它是线程安全的,顺序栈是静态分配空间的,最大容量空间收到的限制,顺序栈遍历速度快,写操作慢与链栈。
  • 对于链栈(Stack)来说,它底层是是通过一条链表(linkedlist)来存储的数据的,是线程不安全的,链栈式动态分配空间的 ,不需要考虑空间的限制,链栈的写的速度快,读的式慢与顺序栈 的。

四:栈常见的应用场景有哪些?

  1. 浏览器的回退和前进:实现的网页的请进后退,实际上使用到了两个栈来实现的,当你看了1 2 3 4四个界面时,将这四个页面押入到栈1中,突然想看页面2个所以点击回退两次,将把栈顶的3 4页面给押入到栈2中,这时候就能看到页面2了,当你突然有想看4在点击两次次前进按钮,将栈2的页面在押入到栈1中这样就可以看到了。

afb63166e9f755f3b9b04022bd5a2ee3.png

2.虚拟机栈:每一个线程又会有自己一个独立的存储空间,这个空间就是虚拟机栈,被称为是虚拟机栈,这里的虚拟机栈是由一个个栈帧组成的,栈里帧包括局部变量表,操作数栈,动态连接,方法出口信息,当你调用对应的方法时候,这个方法的栈帧就会押入到栈中,当这个方法调用结束时,也就伴随这个栈被抛出了栈,

43c9efc3f989890cd615a80688abb028.png

五:栈常见的手撕代码有哪些?

1.检查符号是否成队出现

实现思路:首下将所有的右括号作为键存在map集合中,左括号作为值。遍历给的括号字符串将遍历到左括号加到栈中,如果遍历到右括号的话将栈中的左括号从栈里面拿出来与集合中的对应的左括号进行比较,一样返回true否则返回false.

de31c22afa028374d887ac146639d551.png

2.实现字符串的反转

实现思路:遍历字符串然后将字符串一次押入到栈中,后从栈中一次取出。

f70d087ca045bf129ec945d03694ab45.png

发表评论

表情:
评论列表 (有 0 条评论,200人围观)

还没有评论,来说两句吧...

相关阅读

    相关 数据结构算法-

    什么是栈 栈又称为堆栈,是一种运算受限定表。说是限定表是由于对于元素的入栈和出栈都在表末尾进行,换言之就是先进后出,其本质就是对表尾部元素进行操作。在计算机系统中,栈是具有

    相关 数据结构算法

    数据结构与算法 栈 一、简述       栈是一种只能在一端进行插入或删除操作的线性表。进行插入、删除的一端称为栈顶,栈顶的当前位置是动态的,由一个称为栈顶指针的位置指

    相关 数据结构算法

    前言 在前面几篇我们有讲到数组,链表等数据结构,这些都是存储数据的最基本的结构。而本篇文章讲解的则是利用算法和数据结构来实现一些小工具,来解决现实中某种需求。它就是栈。