怎么学好数据结构啊
2013-11-22
展开全部
我认识一些学通信工程的同学,他们现在找工作很麻烦,因为学得不软不硬的,软件上比不上计算机学院的,硬件上比不上电子信息的,例如在华为笔试时,通信的几乎全挂了。所以建议你专攻一项,我认识的通信的同学现在都在专心学软件方面的,数据结构是软件的基础,因此非常重要。
多写程序是一个学习数据结构的好方法,先把C++学到精通,多写一些内存结构上的程序,主要是顺序表、链表、栈、队列、树等。图论在面试时考得非常少(搜索等方向的例外,google就经常考图论),可以不作重点。查找也考得比较少(数据库和搜索等方向的例外),主要集中在二分查找、哈希表上(哈希很重要,大数据量处理方向的考得特别多,例如百度就专考哈希)。排序是面试中考得最多的,要搞清楚时间复杂度和空间复杂度是怎么算的。递归也经常考,只要按照人正常的思维习惯去考虑问题,就可以轻松掌握递归。
在学习内存结构的东西时要结合实际的例子去思考,这个问题为什么要用这种结构去实现,例如回滚操作或表达式求值要用栈、事务操作要用队列、动态扩展内存要用链表、随机定位要用顺序表等。
数据结构书上常常会有些复杂的算法,如果你实在理解不了可以先跳过,等到你有一定经验积累时在看。我们计算机学院的在学习数据结构时是也有同样的感受,觉得很难,但等过了一年,到自己经验很丰富时,写过很多程序时,就不会觉得很难了。
总之,要多写程序,不能只看书,自己去实现书上写的伪代码,自己去找些实际的例子来实现数据结构。
多写程序是一个学习数据结构的好方法,先把C++学到精通,多写一些内存结构上的程序,主要是顺序表、链表、栈、队列、树等。图论在面试时考得非常少(搜索等方向的例外,google就经常考图论),可以不作重点。查找也考得比较少(数据库和搜索等方向的例外),主要集中在二分查找、哈希表上(哈希很重要,大数据量处理方向的考得特别多,例如百度就专考哈希)。排序是面试中考得最多的,要搞清楚时间复杂度和空间复杂度是怎么算的。递归也经常考,只要按照人正常的思维习惯去考虑问题,就可以轻松掌握递归。
在学习内存结构的东西时要结合实际的例子去思考,这个问题为什么要用这种结构去实现,例如回滚操作或表达式求值要用栈、事务操作要用队列、动态扩展内存要用链表、随机定位要用顺序表等。
数据结构书上常常会有些复杂的算法,如果你实在理解不了可以先跳过,等到你有一定经验积累时在看。我们计算机学院的在学习数据结构时是也有同样的感受,觉得很难,但等过了一年,到自己经验很丰富时,写过很多程序时,就不会觉得很难了。
总之,要多写程序,不能只看书,自己去实现书上写的伪代码,自己去找些实际的例子来实现数据结构。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询