野生前端的数据结构练习(1)——栈
习题主要选自Orelly出版的《数据结构与算法javascript描述》一书。
参考代码可见:https://github.com/dashnowords/blogs/tree/master/Structure/Stack
基本练习
根据栈的特性实现一个
Stack
类,并在后续题目中需要用栈时使用它。编写一个函数
unitTrans(num, unit)
,num
为一个10进制数字,unit
要转换的进制数,求转换结果。编写一个函数
recursion(num)
,num
为一个10进制数字,要求输出num!
的结果。编写一个函数
palindrome(str)
,str
是一个字符串,如果它是一个回文字符串,则返回true
,否则返回false
。
课后习题(书中第四节习题)
一个算数表达式中有
{}
,()
,[]
三种括号,编写一个函数,接受一个算数表达式作为参数,如果括号完全匹配则返回true
,否则返回括号缺失的位置。一个表达式的后缀表达式形式为opt1 opt2 operator,编写一个函数,接受一个算数表达式作为参数(平时使用的算数表达式形式即为中缀表达式),将其转换为后缀表达式(可暂不考虑运算优先级)。
盒子里从上到下放有不定数量的【红色】,【白色】,【×××】三种糖果,编写一个程序,可以使用一个或多个栈,在保证原糖果顺序不变的情况下,取出所有的【×××】糖果。
习题思路
按字符逐个解析表达式,遇到左括号即将其压入栈中,遇到右括号就从栈顶弹出一个元素,查看两者是否匹配,若匹配则继续,若不匹配则返回位置。需要注意的是,如果所有括号均配,则栈的最终状态需要为空。
逆向解析原表达式,将
操作数
和操作符
分别压入两个栈中,接着先从操作数栈中弹出第一个元素,在轮流从操作数栈和操作符栈中弹出元素直至栈为空即可。如果从前到后解析,则栈顶的是最后的元素,出栈时考虑到顺序即可。只用一个额外的栈即可,将【红色】【白色】糖果压入新栈,将×××糖果移除,当糖果盒为空后,再从新的糖果栈中逐个弹出元素重新放回糖果盒的栈即可。
来源:华为云社区 作者:大史不说话
野生前端的数据结构练习(1)——栈相关推荐
- 野生前端的数据结构基础练习(8)——图
[摘要] 图是由边的集合和点的集合组成的.如果图的边有方向(或者说图中的顶点对是有序的)则成为有向图,如果边没有方向则称为无向图. 网上的相关教程非常多,基础知识自行搜索即可. 习题主要选自Orell ...
- 野生前端的数据结构基础练习(2)——队列
网上的相关教程非常多,基础知识自行搜索即可. 习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 参考代码可见:https://github.com/dashn ...
- 野生前端的数据结构练习(12)贪心算法
参考代码可见:https://github.com/dashnowords/blogs/tree/master/Structure/GreedyAlogrithm 一.贪心算法 贪心算法属于比较简单的 ...
- 野生前端的数据结构基础练习(7)——二叉树
[摘要] 网上的相关教程非常多,基础知识自行搜索即可.习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 网上的相关教程非常多,基础知识自行搜索即可. 习题主要 ...
- 野生前端的数据结构基础练习(6)——集合
[摘要] 集合Set是一种不包含不同元素的数据结构,主要特性包括无序性和单一性,即集合中的成员是无序的,同时也是不重复的. 网上的相关教程非常多,基础知识自行搜索即可. 习题主要选自Orelly出版的 ...
- 野生前端的数据结构基础练习(5)——散列
网上的相关教程非常多,基础知识自行搜索即可. 习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 参考代码可见:https://github.com/dashn ...
- 野生前端的数据结构基础练习(4)——字典
[摘要] 网上的相关教程非常多,基础知识自行搜索即可.习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 参考代码可见:https://github.com/d ...
- 野生前端的数据结构基础练习(3)——链表
[摘要] 网上的相关教程非常多,基础知识自行搜索即可.习题主要选自Orelly出版的<数据结构与算法javascript描述>一书. 参考代码可见:https://github.com/d ...
- 野生前端的数据结构练习(11)动态规划算法
[摘要] dynamic programming被认为是一种与递归相反的技术,递归是从顶部开始分解,通过解决掉所有分解出的问题来解决整个问题,而动态规划是从问题底部开始,解决了小问题后合并为整体的解决 ...
最新文章
- java实现https请求
- oracle 判断是否错误_Oracle中的并行系列(二):你设置的并行真的生效了吗?...
- postfix 554-5.7.0 Reject
- 取本地数据_深入理解Kafka服务端之Follower副本如何同步Leader副本的数据
- 请问一下:诸位遇到输入汉字时会重复输入
- 深度学习高能干货:手把手教你搭建MXNet框架
- Blockchain.com将于今日7:59暂停XRP交易
- 净利润大涨三倍、股价飙升,百度新上了一个秘密武器:强化学习
- 工作了五年才明白的道理,这些原来我一开始就做错了
- 戴尔服务器哪1顶型号好,戴尔PowerEdge R730xd新一代服务器评测
- HashMap底层实现(源码分析)
- 用fpga实现永磁同步电机控制_永磁同步电机控制系统仿真系列文章—旋转变压器...
- 仓库镜像源为清华_conda国内镜像修改(最新版)
- 无人机2018发展趋势:数据采集 空中出租车受热捧 | 行业
- [bzoj4698][SDOI2008]Sandy的卡片
- 关于微信小程序开发注意
- ysdk应用宝渠道接入问题记录
- 网络故障排障简单总结
- Ubuntu移除PDF密码
- 近视手术,是福音还是噩梦,知道这些危害,你还敢做吗,眼科小知识都在这里
热门文章
- 天津理工大学c语言上机题库,天津理工大学C语言上机报告题目加答案.doc
- 4,GIL全局解释器锁,event事件,信号量
- 视频编码技术---压缩感知编码---匹配跟踪算法
- 数据结构与算法(刺猬书)读书笔记----目录
- jquery.datatables使用
- Activity-在ListFragment中为ListView增加空白视图
- SIP学习之网络链接
- Excel与DataGridView的操作示例
- 获取周一_周一个股精选:光伏概念、央企改革:太阳能(000591)
- 怎么开启队友无伤_王者荣耀:张飞辅助怎么玩才厉害?出装、打法,为你全面解析...