前言
数据结构的研究内容
通常,用计算机解决一个问题的步骤:首先具体问题抽象为数学模型,然后设计算法,最后编程、调试、运行。
具体问题抽象为数学模型的实质:分析问题、提取操作对象、找出操作对象之间的关系、用数学语言描述。这其中的操作对象和操作对象之间的关系就是数据结构。
随着计算机应用领域的扩展,计算机被越来越多地用于非数值计算,比如学生信息录入修改等。
举例1:
操作对象:每位学生的信息(学号、姓名、性别、籍贯、专业...)
操作算法:查询、插入、修改、删除等。
操作对象之间的关系:线性关系
数据结构:线性数据结构、线性表。
举例2:
操作对象:人机对弈,由当前格局派生新的格局
计算机的操作对象:各种棋局状态,即描述棋盘的格局信息
计算机的算法:走棋,即选择一种策略使棋局状态发生变化(由一个格局派生出另一个格局)
操作对象之间的关系:非线性关系
数据结构:树
举例3:
文件系统的系统结构图:磁盘根目录下有很多子目录及文件,每个子目录又可以包含多个子目录及文件,但每个子目录只有一个父目录,依次类推;
本问题是一种典型的树形结构问题,数据与数据之间成一对多的关系,是一种典型的非线性结构--树形结构。
举例4:
地理信息处理:地图导航--求最短路径(最快路径)
问题:找到图中两点之间的最短路径或最经济路径。
操作对象:各地点及路的信息。
计算机算法:设置信号灯,求出各个可同时通行的路的集合。
对象之间的关系:非线性关系,网状结构