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

习题主要选自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. 只用一个额外的栈即可,将【红色】【白色】糖果压入新栈,将黄色糖果移除,当糖果盒为空后,再从新的糖果栈中逐个弹出元素重新放回糖果盒的栈即可。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏菩提树下的杨过

字符编码-使用c#研究

微软的那个臭屁的JOEL(就是写《JOEL说软件》的那个牛人)曾说:“每一位软件开发人员必须、绝对要至少具备UNICODE与字符集知识(没有任何例外)”,我也常...

1907
来自专栏数说工作室

统计师的Python日记【第1天:谁来给我讲讲Python?】

统计师的Python日记 【第一天】谁来给我讲讲Python? 我是一名数据分析师,曾在漫长的岁月中使用SAS、Matlab和R(使用频率依次递减)。其他如...

4466
来自专栏苦逼的码农

Unicode与UTF-8的区别

要弄清Unicode与UTF-8的关系,我们还得从他们的来源说起,下来我们从刚开始的编码说起,直到Unicode的出现,我们就会感觉到他们之间的关系

7962
来自专栏有趣的Python

py编程技巧-2.1-如何实现自定义的可迭代对象和迭代器对象

实际案例 某软件要求,从网络抓取各个城市气温信息,并依次展示 北京:15~20 天津:17~22 长春:12~18 如果一次抓取所有城市天气再显示,显示第一个...

2806
来自专栏Golang语言社区

interface引发的事件真相

流动的水没有形状,漂流的风找不到踪迹,一切代码都了然于心,我们在写代码的时候,总是有一种思维定式陪伴左右,在对事物做判断的时候,往往这种思维定式会往正向或反向做...

3396
来自专栏Java帮帮-微信公众号-技术文章全总结

第九天 面向对象-类,封装,对象,private,this【悟空教程】

2366
来自专栏信数据得永生

JavaScript 编程精解 中文第三版 一、值,类型和运算符

3628
来自专栏iKcamp

全本 | iKcamp翻译 | 《JavaScript 轻量级函数式编程》|《你不知道的JS》姊妹篇

原文地址:Functional-Light-JS 原文作者:Kyle Simpson - 《You-Dont-Know-JS》作者 本书主要探索函数式编程[1]...

31710
来自专栏逸鹏说道

我为NET狂面试题-基础篇-答案

面向过程: 答案:图片只贴核心代码,完整代码请打开解决项目查看 (答案不唯一,官方答案只供参考,若有错误欢迎提出~) 99乘法表 https://githu...

35513
来自专栏python3

python3--对象之间的交互,类命名空间与对象、实例的命令空间

现在有个游戏人与狗,人定义一个类,狗定义一个类,如何让两个类之间互相交互起来,让这个游戏变得更加有意思,代码如下

1171

扫码关注云+社区

领取腾讯云代金券