数据结构的位置
计算机科学已经深入应用到各个领域,不仅有效地解决了各种工程和科学计算中的数值计算问题,而且也有效地解决了许多文本处理、信息检索、数据库管理、图像识别、人工智能等非数值的数据处理问题。数据结构有助于程序员更有效地组织数据、设计高效的算法、完成高质量的程序以满足错综复杂的实际需要。
数据结构是计算机学科的重要分支研究领域。数据结构和算法在计算机学科中的地位十分重要,其他计算机科学领域及有关的应用软件都要使用到各种数据结构。数据结构是算法分析与设计、操作系统、软件工程、数据库概论、编译技术、计算机图形学、人机交互等专业基础课和专业课程的先行课程。语言编译要使用栈、散列表及语法树;操作系统中用队列、存储管理表及目录树等;数据库系统运用线性表,多链表及索引树等进行数据管理;而在人工智能领域,依求解问题性质的差异将涉及到各种不同的数据结构,如广义表,集合、搜索树及各种有向图等等。数据结构在计算机科学技术中的定位如下图:
数据结构知识体系
数据结构作为一门学科所研究的问题及内容如下图:
数据结构的研究对象(研究内容)
- 1.数据对象的结构形式,各种数据结构的性质 (逻辑结构);
- 2.数据对象和”关系”在计算机中的表⽰示 (物理结构/存储结构);
- 3.数据结构上定义的基本操作(算法);
- 4.算法的效率;
- 5.数据结构的应⽤用,如数据分类,检索.
数据的逻辑结构、存储结构和运算
从字面上来看,数据结构就是指数据间的相互关系。具体到计算机环境,谈到任何一种结构时,都自然地联系着作用在这种类型的数据上的运算(即函数),为了在计算机上执行这些运算,我们有必要把这些数据以某种方式存储在计算机中。因此,我们可以认为,所谓数据结构,就是由某种逻辑关系组织起来的一批数据,按一定的存储方法被存储于计算机中,并在这些数据上定义了一个运算的集合。也就是说,数据结构具有三个方面:数据的逻辑结构、数据的存储结构和数据的运算。
逻辑结构
常见逻辑关系有:线性结构、树形结构、图结构和集合结构。其中,线性结构是最简单的数据结构,例如,程序设计语言中往往都会介绍的线性表(包括数组和链表)、栈、队列、向量、字符串等。其中,字符串就是每个结点都是单个字符的线性表。实际上多维数组和广义表也是线性结构的推广。另外,文件其本质也是线性结构,不过由于存储在外存中,对文件数据的访问速度非常慢,因此,仔细研究文件结构和基于文件的外排序也是很有必要的。
二叉树和树是非常重要