C语言-数据结构绪论一:基本术语和概念

1.数据(data)

是描述和量化客观事物和信息等的符号,在计算机领域是指所有能输入计算机并能被计算机系统和程序识别、存储、加工和处理的符号的总称。

不同的信息如图像、图形、声音、光、电、月球表面信息、行星的运动轨迹、原子核的裂变过程等都能通过数字化归于数据的范畴。

2.数据元素(data element)

是数据的基本单位,在计算机程序中通常把数据元素作为一个整体来存储和处理。数据元素可以只是单个的数据项,也可以由多个数据项复合组成。

例如学生的年龄就是一个数据元素,只有一个数据项。根据需要可以把学生的相关信息如学号、姓名、年龄、性别、电话号码等多个数据项组成一个数据元素统一处理。数据项是数据不可分割的最小单位。数据元素在许多应用中又被称为记录。

3.数据项

是数据不可分割的最小单位。

4.数据对象(data object)

是数据的一个子集,是性质相同的数据的集合。

计算机在处理数据时,总是根据问题的需要,针对某一种或几种数据对象。例如要对学生的学号进行排序、查找等处理时,涉及到“整数集合”。而对学生的学习成绩进行统计、计算时涉及到“实数集合”等。

5.数据结构(data structure)

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。数据元素间的关系称为结构。客观事物之间存在着各种不同的联系,但抽象为数据以后再来研究它们具有的共性关系就单纯得多。数据结构研究这种关系的目的是要把数据合理、有效地存储到计算机上进行处理,所以我们的着眼点放在诸如数据间的位置关系、数据间是否存在直接或间接的联系等方面。例如一个班的学生名单表中,学生是一个接着一个排列的,就可以抽象为“一对一的线性结构”,而把它们随机地记录在笔记本上时,从位置上看就不存在任何关系,只是他们同属于一个班级。又如某单位的上级单位与各个下级单位的关系、祖辈与后辈的关系就可以抽象为“一对多的树形结构”。而诸如某城市中各个公交站点之间的关系、通讯线路上用户之间的关系就可以用“多对多的图结构”来描述。数据结构一般包括三个方面的内容:数据的逻辑结构、数据的存储结构、数据的运算。

6.数据的逻辑结构

数据的逻辑结构是指数据元素间的逻辑关系,也就是数据元素间抽象关系的描述。它与数据在计算机的存储器中存储的方式无关,独立于计算机存在。根据数据间的不同特性,通常有四类基本结构。

(1)集合:结构中的数据除了“同属于一个集合”的关系外,不存在其他关系。

(2)线性结构:结构中的数据元素的位置之间存在一对一的关系。

(3)树形结构:结构中的元素之间存在一对多的关系。

(4)图状结构:结构中的数据元素存在多对多的关系。图状结构又称网状结构。

4种数据的基本结构

(1)集合

(2)线性结构

(3)树形结构

(4)图状结构

7.数据的存储结构

是指数据的逻辑结构在计算机中的表示。它包含两方面的含义。其一是如何在计算机中存储数据元素。其二是如何体现数据元素之间的逻辑关系。即数据的存储结构包括数据元素的表示和关系的表示。

数据的存储结构可分为顺序存储、链式存储、索引存储和散列存储结构。

8.数据的运算

是对数据施加的操作。它定义在逻辑结构上,也就是说,一旦数据的逻辑结构确定了,就可以定义在这种逻辑结构上可以进行何种运算了。但是,数据的运算的具体实现是依赖于数据的存储结构的。同样的逻辑结构可能有不同的存储结构,在不同的存储结构上实现同一个数据运算的方法也不一样。所以,要具体实现某个运算,还要根据数据的存储结构来定。

数据的逻辑结构和数据的存储结构之间的关系如何?

数据的逻辑结构就是从逻辑关系上描述数据,它与数据在计算机的存储器中存储的方式无关,独立于计算机存在。数据的存储结构就是数据元素及其关系在计算机存储器内的表示。数据的逻辑结构是数据之间固有的逻辑关系,是由数据所描述的客观存在决定的,数据的存储结构(物理结构)是数据在计算机中的表示方法,是可选择的,同样的逻辑结构可以用不同的存储结构表述。

数据结构是如何分类的?

(1)从逻辑结构上看,分为线性结构和非线性结构。线性结构的逻辑特征就是每个数据元素最多只有一个直接前趋,也最多只有一个直接后继;非线性结构的逻辑特征是每个数据元素可能有多个直接前趋或直接后继。

(2)从存储结构上看,分为顺序存储、链接存储、索引存储和散列存储。用的最多的是前两种。

顺序存储就是把逻辑上相邻的结点存储在物理位置上相邻的存储单元中,结点的逻辑关系由存储单元的物理位置上的邻接关系来体现。

链接存储就是指逻辑上相邻的结点可以存储在物理位置上不相邻的存储单元中,在存储结点的值的同时存储下一个结点的地址,即“指针”。结点之间的逻辑关系可以通过“指针”来体现。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();