欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    数据结构(Java语言版)实验指导书-栈和队列实验.docx

    • 资源ID:96744538       资源大小:18.19KB        全文页数:5页
    • 资源格式: DOCX        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    数据结构(Java语言版)实验指导书-栈和队列实验.docx

    栈和队列实验答案public class 实验 3_1 /中缀转后缀表达式private void InfixToSuffix (String infix, StringBuffer suffix) throws Exception Stack<Character> s = new Stacko () ;/创建,个栈int iLen = infix . length () ;/计算长度用来控制循环double num = 0;for (int i = 0; i < iLen; i+) /I.略过空格if (infix.charAt(i) = ' 1) continue;/2.如果是数字(包括小数)直接输出else if (IsDigit(infix.charAt(i) suffix.append(infix.charAt(i);/3 .如果是左括号,则直接入栈else if (infix.charAt(i) = (')s.push (infix.charAt(i);/4 .如果是右扩号,则出栈,直到遇到' ”为止,并把、。出栈else if (infix.charAt(i) = 1) *) while (s.peek () != 1( 1) suffix.append(s.peek();s.popO ;)s.popO ;)/5 .如果是若栈中无元素或者栈顶有' (,则直接入栈,否则全部出栈(遇 到“ 也停止)后再入栈(因为+-运算符优先级最低)else if (infix . charAt (i) = 1+ 1 | | infix . charAt (i) = * - 1) (/加一个分隔符,区分2位以上的数字suffix.append(' 1);if (s.empty() | | s.peek () = f (1)s.push (infix.charAt(i);else do suffix.append(s.peek();s.pop (); while ( !s.empty() && s.peek () != f (T);s.push(infix.charAt(i);)/6.如果是*/,若栈顶优先级低于当前运算符,则直接入栈,否则先出栈再入栈 else if (infix . charAt (i) = 1* 1 | | infix . charAt (i) = 1/ 1) /加一个分隔符,区分2位以上的数字 suffix.append(' f;/当前运算符的优先级大于栈顶的优先级的时候直接入栈if (GetPriority(s.peek(), infix.charAt(i) = 1)s.push(infix.charAt(i);else /当栈不为空,H当前运算符的优先级小于等于栈顶的优先级,栈顶不是' (,才能出栈while (!s.empty() && (GetPriority(s.peek(), infix.charAt(i) < 1) && s,peek () != T( f) suffix.append(s peek ();s.pop (); s.push (infix.charAt(i); ) )/7.最后把栈中的运算符都出栈 while (!s.empty () suffix.append(s.peek ();s.pop (); )/后缀表达式计算private double CalcSuffix (String suffix) Stack<Double> s = new Stacko () ;/创建一个栈int iLen = suf fix . length () ;/计算长度用来控制循环double result = 0;/表达式最终结果StringBuf fer temp = new StringBuf fer () ; /临时存方攵数字 for (int i = 0; i < iLen; i+) /I.扫描到数字则入栈 if (IsDigit(suffix.charAt(i) temp append(suffix.charAt(i);else if (suffix.charAt(i) = f 1) if (temp . length () > 0)/tmp转换为数字入栈 s.push(Double.valueOf(temp.toString (); temp.setLength (0);) ) /2.扫描到运算符则将栈顶的两个元素依次出栈做相应的运算,把结果再入栈 else if (IsOperator(suffix.charAt(i) if (temp.length () > 0) s.push(Double . valueOf(temp.toString();temp setLength(0);double opl = s.peek ();s.popO ;double op2 = s.peek ();s .pop ();result = Calc (opl, op2, suffix.charAt(i);s.push(result);)return s . peek();)/判断是否是数字private boolean IsDigit (char ch) return (ch >= 101&& ch <= 191) I| ch = T.f? true : false; )/判断是否是操作符private boolean IsOperator (char ch) return ch = 1+1 | | ch = * -1| | ch = 1* * | | ch = 1/ 1? true : false;)/判断运算符的优先级,表示小于,。表示等于,1表示大于private int GetPriority(char opl, char op2) throws Exception if ( (opl = + | | opl =)&& (op2 =| | op2 = +) return 0;else if (opl = op2)return 0;else if ( (opl = * +1| | opl = 1 - 1) && (op2 = f * 1| | op2 = * / 1) return 1;else if ( (opl = 1 * 1| | opl = 1/ 1) && (op2 = ! -1 op2 =,+,)return -1;else if ( (opl = * * 1| | opl = * / 1) && (op2 = 1 * !| | op2 = * / * ) && opl != op2) return 0;elsethrow new Excption ( "两个运算符优先级未定义.”);)/根据运算符计算两数private double Calc(double oplrdouble op2, char op) switch (op) case 1+1:return op2 + opl;case 1 - 1:return op2 - opl;casereturn op2 * opl;case 1/ :if (opl != 0) return op2 / opl;else return 0; default: return 0; ) ) /获取结果 public double GetResult(String infix) throws Exception StringBuffer suffix = new StringBuffer();InfixToSuffix(infix, suffix);return CalcSuffix(suffix.toString();)/测试public static void main(String args) throws Exception 实验 3_1 calc = new 实验 3_1 ();System.out.printIn(calc.GetResult("2+5+1*(3-3/l+2*3)-1.2)*2H);System, out.print In (2 + 5 + 1* (3 - 3/1 + 2* 3) - 1.2) * 2); ) )/求解约瑟夫问题类ml)/构造方法/置数据成员值/求解约瑟夫序列LinkedList<Integer>();i+)/I到n进队i+)/共出列n个人m; j+)/ /数完鼠-1个人/出队第m个人class Joseph ( int n, m; public Joseph(int nl, int ( n = nl; m = ml;) public String Jsequence() (String ans = "n; Queue<Integer> qu = new for (int i = 1; i <= n; qu.offer(i);for (int i = 1; i <= n; ( for (int j = 1; j <qu.offer(qu.poll ();ans += " ” + qu.poll (); ) return ans;)public class 实验 3_2 public static void main(String args) System.out.printin();System, out.printin (n夫夫*丈夫测试夫夫*夫夫*-); int n = 6, m = 3;Joseph L = new Joseph(nf m);System, out .print In (" n=" + n + ”,m=" + m + ”的约瑟夫序歹U”);System.out.printin(L.Jsequence();System, out .printin ( n夫夫*丈测试 2夫夫*”); n = 8; m = 4;L = new Joseph(nz m);System, out. print In (" n=n+ n + ”,m=" + m + ”的约瑟夫序列”); System.out.printin(L.Jsequence();)

    注意事项

    本文(数据结构(Java语言版)实验指导书-栈和队列实验.docx)为本站会员(太**)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开