数据结构绪论
学习数据结构之前或许你会有这样的疑问:
- 这门课我们学什么?
- 这门课好学吗?
- 这门课怎么才能学好?
接下来我们就一一解答这些问题
Q1:这门课我们学什么?
凭借一句话获得图灵奖的Pascal语言之父——Nicklaus Wirth,让他获得图灵奖的这句话就是他提出的著名公式:
程序=数据结构+算法
这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的E=mc^2
——————这个公式展示了程序的本质
算法其实就是用于解决某一类问题的公式与思想。(给出问题的数学模型)而数据结构就是数据的组织、管理和存储格式,其使用目的是为了高效的访问和修改数据。至于程序就是计算机处理问题的一系列指令。
程序设计的实质是对确定的问题选择一种好的数据结构,并设计一种好的算法。
课程内容:
- 数据结构是计算机软件相关专业的专业基础课
- 在教学计划中的地位 :承上启下、核心部分
- 数据结构是介于数学、计算机硬件和计算机软件之间的一门核心课程
- 类似于武术中的基本功,练武不练功,到头一场空
- 考研必考专业课4门专业课共150分【《数据结构与算法》占45分(更有很多学校只考数据结构与算法)】
- 找工作面试,主要考核的内容
数据结构研究的内容
起初计算机被人们视作数值计算的工具
通常用计算精机解决一个问题的步骤:
- 具体问题抽象成数学模型;
分析问题; 提取操作对象; 找出操作对象之间的关系; 用数学语言描述==>数据结构;【建立相应方程】<一般建立方程容易数据元素之间的关系简单但运算量大,人们就利用计算机来快速的完成复杂的计算> - 设计算法;
- 编程调试运行
随着计算机应用领域的扩展,计算机被越来越多地用于非数值计算,比如信息的处理
操作对象每位学生的信息(姓名、学号、性别、籍贯、专业) 操作算法:查询、插入、修改、删除等 操作对象之间的关系线,性关系数据结构线性数据结构线性表。 操作对象:各种棋盘格局 计算机的算法:根据当前的格局,从提供的派生格局中选择一种。也就是下一步棋,则构成一个新的棋盘格局。 操作对象之间的关系:非线性关系(树) 例2.2:磁盘根目录下有很多子目录及文件,每个子目录里又可以包含多个子目录及文件但每一个子目录只有一个父目录 例3:最短路径问题。从城市A到城市B有多条线路,但每条线路的交通费不同,那么,如何选择一条线路,使得从城市A到城市B的交通费用最少呢? 综上所述:这些问题的共性是:都无法用数学的公式或方程来描述,是一些“非数值计算”的程序设计问题,描述非数值计算问题的数学模型不是数学方程,而是诸如表,树和图之类的具有逻辑关系的数据
数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科
这门课程好学吗?
比较难学。抽象概念性强、需要一些数学逻辑思维不然后面的学习就吃力一些了。
这门课怎么才能学好?
不要中途放弃,要迎难而上;做好笔记(“最淡的墨水也胜过最强的记忆”)即使你不去复习你的笔记也没有什么,其实写字的过程中大脑也在学习,写字放慢了你的速度,从而让你更好的去消化学习的内容)主动学习;必须真真切切的可以写出代码去实现算法并且可以详细的说出每一步是做什么的;多上机敲代码。如果学的不是C语言也没有关系这可以让你了解你掌握的编程语言与C语言的差异。甚至将课本给出的代码用你掌握的语言去改造本身也是很好的学习方法。
|