习题主要选自Orelly出版的《数据结构与算法javascript描述》一书。

参考代码可见:https://github.com/dashnowords/blogs/tree/master/Structure/Stack

基本练习

  1. 根据栈的特性实现一个Stack类,并在后续题目中需要用栈时使用它。

  2. 编写一个函数unitTrans(num, unit),num为一个10进制数字,unit要转换的进制数,求转换结果。

  3. 编写一个函数recursion(num),num为一个10进制数字,要求输出num!的结果。

  4. 编写一个函数palindrome(str),str是一个字符串,如果它是一个回文字符串,则返回true,否则返回false

课后习题(书中第四节习题)

  1. 一个算数表达式中有{},(),[]三种括号,编写一个函数,接受一个算数表达式作为参数,如果括号完全匹配则返回true,否则返回括号缺失的位置。

  2. 一个表达式的后缀表达式形式为opt1 opt2 operator,编写一个函数,接受一个算数表达式作为参数(平时使用的算数表达式形式即为中缀表达式),将其转换为后缀表达式(可暂不考虑运算优先级)。

  3. 盒子里从上到下放有不定数量的【红色】,【白色】,【×××】三种糖果,编写一个程序,可以使用一个或多个栈,在保证原糖果顺序不变的情况下,取出所有的【×××】糖果。

习题思路

  1. 按字符逐个解析表达式,遇到左括号即将其压入栈中,遇到右括号就从栈顶弹出一个元素,查看两者是否匹配,若匹配则继续,若不匹配则返回位置。需要注意的是,如果所有括号均配,则栈的最终状态需要为空。

  2. 逆向解析原表达式,将操作数操作符分别压入两个栈中,接着先从操作数栈中弹出第一个元素,在轮流从操作数栈和操作符栈中弹出元素直至栈为空即可。如果从前到后解析,则栈顶的是最后的元素,出栈时考虑到顺序即可。

  3. 只用一个额外的栈即可,将【红色】【白色】糖果压入新栈,将×××糖果移除,当糖果盒为空后,再从新的糖果栈中逐个弹出元素重新放回糖果盒的栈即可。

来源:华为云社区  作者:大史不说话

野生前端的数据结构练习(1)——栈相关推荐

  1. 野生前端的数据结构基础练习(8)——图

    [摘要] 图是由边的集合和点的集合组成的.如果图的边有方向(或者说图中的顶点对是有序的)则成为有向图,如果边没有方向则称为无向图. 网上的相关教程非常多,基础知识自行搜索即可. 习题主要选自Orell ...

  2. 野生前端的数据结构基础练习(2)——队列

    网上的相关教程非常多,基础知识自行搜索即可. 习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 参考代码可见:https://github.com/dashn ...

  3. 野生前端的数据结构练习(12)贪心算法

    参考代码可见:https://github.com/dashnowords/blogs/tree/master/Structure/GreedyAlogrithm 一.贪心算法 贪心算法属于比较简单的 ...

  4. 野生前端的数据结构基础练习(7)——二叉树

    [摘要] 网上的相关教程非常多,基础知识自行搜索即可.习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 网上的相关教程非常多,基础知识自行搜索即可. 习题主要 ...

  5. 野生前端的数据结构基础练习(6)——集合

    [摘要] 集合Set是一种不包含不同元素的数据结构,主要特性包括无序性和单一性,即集合中的成员是无序的,同时也是不重复的. 网上的相关教程非常多,基础知识自行搜索即可. 习题主要选自Orelly出版的 ...

  6. 野生前端的数据结构基础练习(5)——散列

    网上的相关教程非常多,基础知识自行搜索即可. 习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 参考代码可见:https://github.com/dashn ...

  7. 野生前端的数据结构基础练习(4)——字典

    [摘要] 网上的相关教程非常多,基础知识自行搜索即可.习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 参考代码可见:https://github.com/d ...

  8. 野生前端的数据结构基础练习(3)——链表

    [摘要] 网上的相关教程非常多,基础知识自行搜索即可.习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 参考代码可见:https://github.com/d ...

  9. 野生前端的数据结构练习(11)动态规划算法

    [摘要] dynamic programming被认为是一种与递归相反的技术,递归是从顶部开始分解,通过解决掉所有分解出的问题来解决整个问题,而动态规划是从问题底部开始,解决了小问题后合并为整体的解决 ...

最新文章

  1. java实现https请求
  2. oracle 判断是否错误_Oracle中的并行系列(二):你设置的并行真的生效了吗?...
  3. postfix 554-5.7.0 Reject
  4. 取本地数据_深入理解Kafka服务端之Follower副本如何同步Leader副本的数据
  5. 请问一下:诸位遇到输入汉字时会重复输入
  6. 深度学习高能干货:手把手教你搭建MXNet框架
  7. Blockchain.com将于今日7:59暂停XRP交易
  8. 净利润大涨三倍、股价飙升,百度新上了一个秘密武器:强化学习
  9. 工作了五年才明白的道理,这些原来我一开始就做错了
  10. 戴尔服务器哪1顶型号好,戴尔PowerEdge R730xd新一代服务器评测
  11. HashMap底层实现(源码分析)
  12. 用fpga实现永磁同步电机控制_永磁同步电机控制系统仿真系列文章—旋转变压器...
  13. 仓库镜像源为清华_conda国内镜像修改(最新版)
  14. 无人机2018发展趋势:数据采集 空中出租车受热捧 | 行业
  15. [bzoj4698][SDOI2008]Sandy的卡片
  16. 关于微信小程序开发注意
  17. ysdk应用宝渠道接入问题记录
  18. 网络故障排障简单总结
  19. Ubuntu移除PDF密码
  20. 近视手术,是福音还是噩梦,知道这些危害,你还敢做吗,眼科小知识都在这里

热门文章

  1. 天津理工大学c语言上机题库,天津理工大学C语言上机报告题目加答案.doc
  2. 4,GIL全局解释器锁,event事件,信号量
  3. 视频编码技术---压缩感知编码---匹配跟踪算法
  4. 数据结构与算法(刺猬书)读书笔记----目录
  5. jquery.datatables使用
  6. Activity-在ListFragment中为ListView增加空白视图
  7. SIP学习之网络链接
  8. Excel与DataGridView的操作示例
  9. 获取周一_周一个股精选:光伏概念、央企改革:太阳能(000591)
  10. 怎么开启队友无伤_王者荣耀:张飞辅助怎么玩才厉害?出装、打法,为你全面解析...