认识栈结构

1. 认识栈结构

栈也是一种非常常见的数据结构,并且在程序中的应用非常广泛。
数组

  • 我们知道数组是一种线性结构,并且可以在数组的任意位置插入和删除数据
  • 但是有时候,我们为了实现某些功能,必须对这种任意性加以限制
  • 而栈和队列就是比较常见的受限的线性结构,我们先来学习栈结构

栈结构示意图:


    
栈( stack ),它是一种受限的线性表,后进先出(LIFO)

  • 其限制是仅允许在表的一端进行插入和删除运算。这一端被称为栈顶,相对地,把另一端称为栈底。
  • LIFO(last in first out)表示就是后进入的元素,第一个弹出栈空间,类似于自动餐托盘,最后放上的托盘,往往先把拿出去使用
  • 向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素
  • 从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。

 2. 栈的面试题

面试题目:

  • 答案是C,因为出栈6,6在5的下面所以不可能出栈
  • A答案:65进栈,5出栈,4进栈出栈,3进栈出栈,6出栈,21进栈,1出栈,2出栈
  • B答案:654进栈,4出栈,5出栈,3进栈出栈,2进栈出栈,1进栈出栈,6出栈
  • D答案:65432进栈,2出栈, 3出栈,4出栈,1进栈出栈,5出栈,6出栈

3. 栈结构封装

实现栈结构有两种比较常见的方式:

  • 基于数组实现
  • 基于链表实现

什么是链表?

也是一种数据结构,目前我们还没有学习,并且JavaScript中并没有自带链表结构;后续,我们会自己来实现链表结构,并且对比数组和链表的区别

因此,我们这里实现的栈结构基于数组。

4. 栈常见操作

栈常见有哪些操作呢?

  • push(element):添加一个新元素到栈顶位置
  • pop():移除栈顶的元素,同时返回被移除的元素
  • peek():返回栈顶的元素,不对栈做任何修改(这个方法不会移除栈顶的元素,仅仅返回它)
  • isEmpty():如果栈里没有任何元素就返回true,否则返回false
  • size():返回栈里的元素个数。这个方法和数组的length属性很类似
  • toString():将栈结构的内容以字符形式返回

现在,我们可以在类中一一实现这些方法!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值