您的位置:首页 > 理论基础 > 数据结构算法

其实我们都可以学好“数据结构”!

2010-10-26 21:41 183 查看
“数据结构与算法”(有时也称数据结构)课程是大学计算机专业的重要基础课程。考研中,数据结构也几乎是专业课之必考。另外,在实际工作中,数据结构依然很有用。至少很多公司面试笔试也会考的。可以坦白地讲,如果你数据结构知识为零,那基本上你是无法从事“更有质量”的开发工作的。尽管数据结构非常重要,但这门课由于逻辑性要求较强,非常抽象,因此很多学生面对它都显得力不从心。那么到底该如何学好数据结构呢?我想这才是同学们最关心的问题吧。至于什么心态上的、方法论上的问题我们这里就不浪费笔墨了。我们重点来讲点实际的。

首先,一般的规律是你至少得掌握一门计算机语言之后再来学习数据结构。高校中课程一般也是这么排的。如果你语言学得不好,然后就直接学数据结构,那么你的理论就无法落地,就无法得到深化,也没有办法应用。特别注意,我这里的所谓“学好”,标准就是你能够用数据结构和算法知识来编程解决实际问题。比如:最起码自己能够在没有任何资料的帮助下编程解决8皇后问题吧。这其中就涉及到两个能力了。数据结构和算法知识肯定是一方面啊,另一方面呢?编程啊!你连编程都是半瓶子醋,就算数据结构学到天上了又怎么能解决问题呢?纸上谈兵吗?首先语言必须得学好,不管是C还是C++还是Java,什么都行,但得有一个精的,然后再来玩数据结构。如果语言不过关,那就再修修语言吧,啥时候语言通了再来讲数据结构。

其次,看书,看一本好书,认认真真的看一本好书,从头到尾认认真真的看一本好书。简单的说,你如果要想把这个东西(数据结构与算法)学好,自己备一本(至少一本)专门讲这个东西的书肯定是必须的。我很难想象出如果你想把这个东西学好,然后又不用看书的方法...工欲善其事,不先利其器。一本好的书能够让你学得更轻松,能够让你理解更深刻,让你学得更系统。有的人会说,网络这么大,我就上网找资料学,问题上网上的东西,例如帖子或电子文稿,都非常不系统。就好像你中学学物理,只学了力学和热学,却没学电磁学,就算你力学学得再好,你能去参加高考吗?所以如果是个一瓶子不满半瓶子晃的水平,那根本就不能说自己学了或者学会了,这都言之过早啦。所以要是缺了一本正经八百的书,那在此之后所有的意见和学习方法都是无从谈起了。如果你现在手头还没有一本讲数据结构和算法的书,那我觉得我这篇文章,你基本上也甭看了,看完了还是啥也不会。

当然,也有很多人会说到让我推荐一些这方面的书籍。毕竟,讲数据结构和算法的书太多了,真是太多了,不过好的不多啊,呵呵。的确,书是很多的,而且其中有些书很经典,但是我奉劝同学们不要太好高骛远,还是脚踏实地点好,俗话说:万丈高楼平地起啊。一些特别经典的东西理解起来偏难,例如:Knuth的那套《计算机程序设计艺术》(现在分卷分册的中英文对照版国内已经都出了),该书绝对是这么学问的权威之作,以及《算法导论》(大名鼎鼎啊),这两部书都很经典,但刚开始可能不太适合大家。如果你自认为水平已经很高了,那就看看这两本吧。另外,比较适合初学者的书籍,我建议大家可以看看我编写的《C++数据结构原理与经典问题求解》(http://product.dangdang.com/product.aspx?product_id=20385620)。我一直以来都认为用面向对象语言来讲解数据结构非常合适。因为面向对象的“抽象性”、“封装性”等特点用来编写“结构”,从思想上更容易被接受,也更容易讲得通,对于初学者来说,困难也就会小很多。我这本书除了采用C++作为描述语言以外,讲得还算通俗易懂吧,对于那些复杂的算法用了很大的篇幅去描述算法的过程,而且图特别多,一本书下来有大概400多张图表,我觉得这样更容易帮助读者理解。另外一个特点是,这书里面的代码都是绝对可以运行的,绝非伪代码,这里面结合具体的问题和一些经典实例都配有完整的代码。我觉得这样能够让读者提供实际的解决问题的编码能力。另外书中的例子取材都非常好,是一些经常被提到的经典问题,这些示例程序无论是对于你的理解,还是对于你的实践都大有裨益。

如果现在你语言已经过关了,手头还有一本好书,然后呢?当然是得编程实践了。看到书上的一些实际问题:比如约瑟夫环问题,比如舞伴问题,那就自己编程解决吧。如果能把书里出现的例子都自己亲自编码实现一下,你必然会发现自己进步神速。

===========================

最新作品《C语言参悟之旅》全新上市,敬请关注!

当当网有售:http://product.dangdang.com/product.aspx?product_id=20815590

&ref=search-0-A
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐