谈谈我对数据结构

       我想肯定也还有很多跟我以前一样,数据结构不知道怎么的学,难是一方面,不知道有什么用也是一方面。我刚学数据结构时认为只要把代码看懂,会把代码写出来才是把数据结构学好了。现在想想当时的自己真傻,其实学数据结构并不是学里面的代码,而是学思想,我们可以发现严蔚敏的数据结构书里并没有完整的代码给你,那本书大多是讲理论比较多,主要是以功能模块形式出现,是的这本书是叫我们怎样的把一个实际问题用数学方面描述出来。所以我们学数据结构不能仅仅满足于代码,一定要学会学会怎样的分析问题。下面有这样一道题,用栈实现中缀表达式如:a+b*(c-d)+e/f#转换成后缀表达式的算法;如果你是一个和我一样喜欢问什么的,打破砂锅问到底的人,我很喜欢和你这种人讨论,假设你没有一点的硬件知识,你可能会问一个简单的表达式为什么要转换成后缀表达式,是的,现在的操作系统,还有其他的软件把他做的很好。如果你没有学过计算机组成,你一定想不到,就这么一个简单的运算你要自己完整的写出来并不容易。在我们的电脑中的处理器中并没有减 乘 除等运算,只有一种加法运算,这样的加法还是用二进制的形式在逻辑电路实现,为了减少硬件的设计减,乘,除都是通过加法来实现,如果你想看看具体的实现建议你找一本计算机组成的书看下,我们通常的的运算是乘/除,加/减电脑它并没有这样的智能处理这种运算,所以我们必须自己写让电脑能按我们的这种运算法则来运算。好的,现在知道我们有必要写这中算法了吧。用数学的方法文字描述如下:

1.操作符栈初始化,将结束符'#'进栈,然后读入中缀表达式字符流的首字符ch.

2. 重复执行以下步骤,直到ch='#',同时栈顶的操作符也是‘#’,停止循环

  (1).若ch是操作数直接输出,读入下一个字符ch

   (2)若ch是操作符,判断ch的优先级icp和当前栈顶操作符op的优先级isp

           a.若icp(ch)>isp(op) ,令ch进栈,读入下一个字符ch

           b若icp(ch)<isp(op),退出栈并输出

           c 若icp(ch)==isp(op) ,退栈但不输出,若退出的是‘(’号,读入下一个字符ch

   (3)算法结束,输出系列即为所需的后缀表达式

好的,如果你可以根据上面的描述可以把代码写出来,是不是有那种感觉把问题的描述,写代码是不是很容易,反正我是觉得只要把问题分析清楚了,写代码很容易,数据结构叫的就是这个,而这种思想我觉得完全是在做数学题,要学会用数学的分析,逻辑思想来分析问题。只有自己可以写出来才算自己理解了,在写的时候感觉自己对数据结构的理解还不是很到位写着写着就乱了。好了,数据结构的理解就到这吧。

        



  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值