友人C

告一段落!
经过了约4、5天的努力,博客基本差不多了,不过话说,因为我这个网站的https是cloudflare提供的,必须把...
右键或长按保存图片
03
2016/07

告一段落!

经过了约4、5天的努力,博客基本差不多了,不过话说,因为我这个网站的https是cloudflare提供的,必须把域名DNS让它来接管!发现速度变慢了啊,也有可能是域名重定向问题?以前感觉速度还是可以的又有换回http的冲动呢!
博客整体暂时就这样吧!

然后,小学期要开始程序设计实训了~~
这是我选的题目:

表达式求值问题

  • 11.1 项目简介

表达式求值是程序设计语言编译中的一个最基本问题,就是将一个表达式转化为逆波兰表达式并求值。具体要求是以字符序列的形式从终端输入语法正确的、不含变量的整数表达式,并利用给定的优先关系实现对算术四则混合表达式的求值,并演示在求值过程中运算符栈、操作数栈、输入字符和主要操作变化过程。
要把一个表达式翻译成正确求值的一个机器指令序列,或者直接对表达式求值,首先要能正确解释表达式。任何一个表达式都是由操作符(operand)、运算符(operator)和界限符(delimiter)组成,我们成它们为单词。一般的,操作数既可以是常数,也可以是被说明为变量或常量的标识符;运算符可以分为算术运算符、关系运算符和逻辑运算符3类;基本界限符有左右括号和表达式结束符等。为了叙述的简洁,我们仅仅讨论简单算术表达式的求值问题。这种表达式只包括加、减、乘、除4种运算符。
人们在书写表达式时通常采用的是“中缀”表达形式,也就是将运算符放在两个操作数中间,用这种“中缀”形式表示的表达式称为中缀表达式。但是,这种表达式表示形式对计算机处理来说是不大合适的。对于表达式的表示还有另一种形式,称之为“后缀表达式”,即将运算符紧跟在两个操作数的后面。这种表达式比较适合计算机的处理方式,因此要用计算机来处理、计算表达式的问题,首先要将中缀表达式转化成后缀表达式,又成为逆波兰表达式。

  • 11.2 设计思路

为了实现表达式求值,可以首先读入原表达式(包括括号)并创建对应二叉树,其次对二叉树进行前序遍历、中序遍历、后续遍历(非递归),并输出逆波兰表达式,最后求解原表达式的值,同时对非法表达式格式能予以判断。
设str1=(a+b)((c+d)e+fhg);str2是目的串。先用一个堆栈存储operand,遇到数字就不做处理直接放到目的串中,遇到operaor则将其与堆栈顶元素比较优先级,决定是否送到输出串中,这样处理之后能得到一个后续的排列,再建立二叉树,当遇到ab+这样的建立左右接点为a和b的根为+的树并返回根接点,当遇到操作符前面只有一个操作数的如c这样的情况就建立右子接点为c的根接点为的,左结点为上次操作返回的子树的根接点(这种情况下就是合并树的情况)。
非递归方法进行树的遍历需要用到栈结构。首先调用stack的ADT中的creatEmptyStack()函数来建立一个空栈(注意,栈元素的类型是指向树结点的指针)。
首先将根节点压入栈中。然后进入循环。
如果栈不空,
弹出栈顶元素,
进行访问,
压入右子树(节点指针),
压入左子树(节点指针),
循环。
由于需要同时用到树和栈两种抽象数据类型并且需要进行互动操作,在头文件中需要加入#ifndef#define#endif宏命令来避免出现重复定义的问题。

  • 11.3 数据结构

用二叉树的结构来存储表达式,后续遍历二叉树即可得到逆波兰表达式,也可以通过树的合并操作完成表达式的计算。

这题算是给定那么多题目中比较简单的一题,因为这种题目几乎是有标准答案的!有标准答案的题目其实都是最简单的!因为可以在查到答案。

有没有大神的,带我飞:yum:

最后修改:2016 年 10 月 29 日 05 : 45 PM
如果觉得我的文章对你有用,请随意赞赏

15 条评论

  1. xema

    瞬间都要淘汰http了……

    1. 友人C
      @xema

      对啊,谷歌浏览器搞的事情太大了

      1. xema
        @友人C

        火狐直接封杀所有有关SHA-1的证书

  2. Accompany

    ( ⊙ o ⊙ )啊!果然是要充10元的,我是之前想绑定自定义域名就充了...

    1. CSD
      @Accompany

      额。。。发现直接在原有http改成https 虽然显示证书风险但引入网页没有任何问题,现在已经改到七牛去了~

    2. CSD
      1. Accompany
  3. CSD

    无奈七牛改域名账户里还要10块钱

    1. Accompany
      @CSD

      使用七牛提供的免费域名不需要的呀,自定义域名才需要,而且自定义绑定域名还需要备案...(⊙﹏⊙)b

      1. CSD
        @Accompany

        咋弄啊

        1. Accompany
          @CSD

          你要弄七牛镜像存储还是什么呀?七牛云有一栏是 融合 CDN 加速域名,右边有一个申请https域名空间呀

          1. CSD
            @Accompany

            使用自定义域名需要账户经过实名认证,并且账户余额不小于10元

            1. Accompany
              @CSD

              而且自定义域名必须备案(=@__@=)

              1. CSD
                @Accompany

                我的CDN加速域名就显示介个啊

            2. Accompany
              @CSD

              自定义域名没啥用呀,我是说七牛的https空间提供免费的

发表评论