什么是数据结构?
大学是计算机本专业的同学肯定有学习过数据结构这门课程,我也上过这门课,大学老师差不多花了半个学期的时间去讲这门课程,但是现在让我回想他上课讲了什么,我已经记不清了,因为大学课程有个共同的特点,又慢又长。通过本文主要解释一下我理解的数据结构是什么样子,开始进入正题。
首先,我们为什么学习数据结构?
举个例子:
如果说学习语文的最终目的是写小说的话,那么如果一个小学生刚刚学习了识字,就让他去写小说,显然这是不现实的
中间他必须经历写作文。写作文的目的有两个
- 掌握写作套路、技巧(理论水平),保证以后写小说的质量
- 提高写作水平(动手能力),为以后写小说打好基础
学习一门计算机语言就好比识字阶段,以后开发项目就好比写小说,中间都离不开数据结构的学习,就好比学习写小说之前要先学会如何写作。
高级计算机程序设计的理论指导
拧螺丝需要用到扳手,用钳子也可以,只不过没有那么好用。学习数据结构,就是为了了解以后在IT行业里搬砖需要用到什么工具,这些工具有什么利弊,应用于什么场景。你会发现这些基础工具也存在着一些缺陷,你不满足于此,此时,你就开始自己在这些数据结构的基础上加以改造,这就叫做自定义数据结构。
掌握了开车的本领,桑塔纳、宝马、奔驰都可以上手开了
数据结构可以采用不同的语言来描述和实现,我这里所讲述的自然是Java语言。
提升编程能力
个人认为数据结构是编程最重要的基本功没有之一
学习了Java、python、android、C、C++,你就成为编程高手了吗
不见得,每门语言都是入门而已,水平并没有得到多少锻炼
学习一门数据结构,掌握了各种简单、复杂数据类型的算法,编程能力会有大的提升,甚至质的飞跃,内力深厚。
面试中经常问到
为什么面试官喜欢问数据结构
能够看出一个同学是否基础扎实,能够看出一个人的发展后劲
因为数据结构本身也有难度
有哪些数据结构?
线性表、栈、队列、(字符串)串、数组、广义表、树、二叉树、图
重点是线性表、二叉树
数据结构与算法不可分
对于查询和排序一般单独讨论
学习数据结构的四种境界
境界1:听懂理论、听懂算法思路(理论家、眼高手低,总比不知道强多了)
境界2:完成主要数据结构基本算法的实现(理论+实现,数据结构入门了)
境界3:完成更多数据结构更多算法的实现(进一步提高数据结构功底)
境界4:融会贯通、举一反三,在后续开发中综合应用数据结构知识(数据结构就是哲学思想,只有和实践结合才能学好)
学习数据结构不是一日之功、对于初学者要达到境界2,后续学习和工作中要不断地研究学习