栈的实现及应用
2014-07-01 21:52:14 3 举报
栈是一种常用的线性表,在操作系统中被大量使用,比如计算各种表达式。设计程序完成一个24点游戏,要求用户将四个随机产生的十以内的整数进行加减乘除(允许使用括号,每个数只能用一次)求得二十四。(注:可以不判断录入的表达式是不是只使用了给定的四个数或者使用了多次数) 功能要求: (1)随机产生四个数(使用randomize和random函数); (2)要求用户录入表达式,只能使用括号,加,减,乘和除; (3)将中序算术表达式变成逆波兰式(也就是后序算术表达式); (4)使用栈求解逆波兰式(求解过程可以判定是否只用了给定的数); (5)按答案输出 True 或者 False。 提高:该完成该项目时,思考用户可能会录入哪些让你想不到的数据? 输入: 先输出四个数,等待用户输入表达式 1 2 3 4 1*2*3*4 显示要求: 如果按照规则计算成24,输出True,其它所有情况输出False
作者其他创作
大纲/内容
yes
产生四个随机数
判断是否等于24?
no
创建两个栈
逆波兰式转换
true!
是否是末尾?
弹出栈一top存储的操作符到栈二直到遇到‘(’结束并弹出‘(’
只能使用加减乘除和括号
弹出top的操作数到栈二直到遇到优先级更低的操作符
判断表达式数组每个元素
栈一:存储算数操作符
栈二:存储数字操作数
数字操作数?
优先级高
输出结果
计算逆波兰式
优先级低或相等
直接存入栈一
判断与栈一top存储的操作符优先级
是否是“)”
输入表达式存入数组
结束
false!
是否是\"(\"
存入栈二
开始
实现二十四点
0 条评论
下一页