0 前言
1、同学们心中的疑问
①这门课程是讲什么的?
②这门课重要吗?
③这门课好学吗?
④怎么才能学好这门课?
2、课程内容
凭借一句话获得图灵奖的Pascal语言之父——Nicklaus Wirth,让他获得图灵奖的这句话就是他提出的著名公式:“程序=数据结构+算法”。
这个公式对计算机科学的影响程度足以类似物理学中爱因斯坦的“E=MC^2”。——一个公式展示出了程序的本质。
3、数据结构这门课重要吗?
①数据结构是这计算机软件相关专业的专业基础课。
②在教学计划中的地位:核心、承上启下的课程。
③数据结构是介于数学、计算机硬件和计算机软件三者之间的一门核心课程。
4、这门课好学吗?
有点难。
①概念性强、抽象。
②算法灵活、不易掌握。
③逻辑性强,算法设计很烧脑。
5、怎么才能学好这门课程呢?
勤于思考;多做练习;多上机;善于寻求帮助;不怕困难,不放弃!!!
1.1 数据结构的研究内容
1、计算机解题步骤
通常,用计算机解题一个问题的步骤:
①具体问题抽象为数学模型。
实质:分析问题;提取操作对象;找出操作对象之间的关系;用数学语言描述→数据结构。
②设计算法。
③编程、调试、运行。
2、数值计算
早期,计算机主要用于数值计算。
3、非数值计算
(1)例1
类似的还有图书管理系统、人事管理系统、仓库管理系统、通讯录……
操作对象:若干行数据记录。
操作算法:查询、插入、修改、删除等。
操作对象之间的关系:线性关系。
数据结构:线性数据结构、线性表。
(2)例2
人机对弈问题。
之所以能对弈:策略已经输入计算机,可以根据当前棋盘格局,来预测棋局发展的趋势,甚至最后结局。
计算机的操作对象:各种棋局状态,即描述棋盘的格局信息。
计算机的算法:走棋,即选择一种策略使棋局状态发生变化(由一种格局派生出另一个格局)。
操作对象之间的关系:非线性关系、树。
(3)文件系统的系统结构图
磁盘根目录下有很多子目录及文件,每个子目录里又可以包含多个子目录及文件,但每个子目录只有一个父目录,依此类推。
本问题是一种典型的树型结构问题,数据与数据成一对多的关系,是一种典型的非线性关系结构——树形结构。
(4)地理信息处理
地图导航——求最短路径(最快路径)。
问题:找出图中两点之间的最短路径或最经济路径。
操作对象:各地点及路的信息。
计算机算法:设置信号灯,求出各个可同时通行的路的集合。
对象之间的关系:非线性关系、网状结构。
4、小结
综上所述:
①这些问题的共性是都无法用数学的公式或方程来描述,是一些“非数值计算”的程序设计问题。
②描述非数值计算问题的数学模型不是数学方程,而是诸如表、树和图之类的具有逻辑关系的数据。
③数据结构是一门研究非数值计算的程序设计中计算机的操作对象以及它们之间的关系和操作的学科。
要想有效地使用计算机,就必须学习数据结构。