前言
我们为什么要学习数据结构?这也是我每天所要思考的问题。仅仅是对以后工作有帮助吗?我的小脑瓜子不禁产生了许多疑问。
N.沃思(Niklaus Wirth)教授提出:
程序=算法+数据结构
电子计算机的主要用途:
早期:主要用于数值计算;
后来:非数值计算,复杂的具有一定结构关系的数据。
数据结构主要分为线性表、树、图这几个部分
线性表:通常运用在书目自动检索系统当中;
树:通常用来解决人机对弈、文件系统的系统结构图以及六度空间理论当中;
例如六度空间理论:
顾名思义,你和任何一个陌生人之间所间隔的人不会超过6个,也就是说,最多通过6个中间人你就能够认识任何一个陌生人。
图:用来解决多叉路口交通灯管理问题。
例如下面的多叉路口:
顶点:一条通路
连线:不能同时通行
染色:有连线的两个顶点不能具有相同颜色
求解非数值计算的问题
设计出合适的数据结构及相应的算法
即:首先要考虑对相关的各种信息如何表示、组织和存储。
通常,数据结构的研究内容为:
研究非数值计算的程序设计问题中计算机的操作对象以及它们之间的关系和操作。
数据结构课程的形成和发展
1. 形成阶段
60年代初期,“数据结构”有关的内容散见于操作系统、编译原理和表处理语言等课程。1968年,“数据结构”被列入美国一些大学计算机科学系的教学计划。
2. 发展阶段
数据结构的概念不断扩充,包括了网络、集合代数论、关系等“离散数学结构”的内容。 70年代后期,我国高校陆续开设该课程。
数据结构创始人--高德纳(Donald Ervin Knuth)
1938年出生,斯坦福大学计算机系教授--36岁图灵奖。
而对于我们目前来看,我们最需要的是什么
1. 练内功
不要只花功夫学习各种流行的编程语言和工具,以及一些公司招聘广告上要求的科目。
学好基础课程:离散数学、数据结构、计算机组成原理、操作系统、计算机网络、编译原理、数据库等。
试试Knuth的The Art of Computer Programming的题目。
2. 多实战
通过编程的实战,积累经验、内化知识;
建议大家争取在大学四年中积累编写十万行代码的经验。
数据结构所处的地位
从图中来看,数据结构介于数学、计算机硬件和计算机软件三者之间的一门核心课程。
数据结构在计算机学科中的地位
整体看来,数据结构对我们程序打下基础至关重要。
因此,我们的目标是——
1. 能够分析研究计算机加工的对象的特性,获得其逻辑结构,根据需求,选择合适存贮结构及其相应的算法;
2. 学习一些常用的算法;
3. 复杂程序设计的训练过程,要求编写的程序结构清楚和正确易读;
4. 初步掌握算法的时间分析和空间分析技术。
最后为大家呈上数据结构的思维导图供大家参考:
总结
以上就是今天要讲的内容,了解了数据结构的历史和地位以及我们应该怎么学习数据结构,但最后也是凭自己的实力啦,我觉得数据结构不仅仅是为了以后工作,更多是热爱和储备自己的知识体系吧!我的文章可以帮助大家参考一下。感谢大佬们的支持!我会在数据结构的道路上跟随大佬们一起共同进步!