数据结构第1章习题解答..

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

第1章习题解答

1.1什么是数据结构?一个数据结构结构的二元组定义形式是什么样的?举例解释其含义。

[解答]

概括地说,数据结构是互相有关联的数据元素的集合。也就是说,数据结构是由某个数据元素的集合和该集合中的数据元素之间的关系组成的,因此数据结构可以用一个二元组来表示。例如,B=(D,R),其中D是某一数据元素的集合,R是D上的关系的有限集。R所表示的是集合D的数据元素之间的逻辑关系,它表示的可能是数据元素之间客观存在的某种联系,也可能是为了处理问题的需要而人为组织的数据元素之间的某种关系,因此,称之为数据的逻辑结构。例如,一个农历节气表,就构成了一个数据结构,其数据元素是一年的农历二十四节气,数据元素之间的关系是节气的时间先后关系。又如,一个某年级学生的成绩排序表,也是一个数据结构,其数据元素是包含成绩项的该年级的学生记录,数据元素之间的关系是学生之间的成绩高低关系。为了在计算机中进行数据处理,必须把从实际问题中抽象出来的数据的逻辑结构映象到计算机的存储器中,即要把抽象出来的数据元素集合D 和数据元素之间的关系存储到计算机的存储器中,称之为数据的物理结构或存储结构,它是数据的逻辑结构在计算机中的表示。

1.2假设R是集合M上的一个关系,R的定义是什么?对实际问题而言,其含义是什么?

[解答]

如果R是对集合M自身的笛卡尔积所取的一个子集,那么我们就说“R是集合M上的一个关系”。对实际问题而言,它表示的是集合M中元素的某种相关性。例如,对于参加一个羽毛球比赛的运动员集合,可以用一个二元关系表示出各场比赛的胜负关系。对于一组课程的集合,可以用一个二元关系表示出各门课程之间的先修和后续关系等等。

1.3设有集合M={d1,d2,d3,d4,d5}上的一个关

R={(d1,d2),(d2,d4),(d4,d5),(d2,d5),(d1,d4),(d1,d5),(d3,d5),(d1,d3)},试说明关系R具有什么样的性质。

[解答]

从二元关系的基本性质容易验证,该关系R是反自反的、反对称的、传递的关系。

因为关系R中没有(d i,d i)这样的元素,所以它是反自反的。

因为关系R中没有(元素d i,d j)和(d j,d i)同时存在的情况,所以它是反对称的。

关系R 的传递性表现在:

有元素(d1,d2),(d2,d4),同时有元素(d1,d4),

有元素(d1,d2),(d2,d5),同时有元素(d1,d5),

有元素(d1,d3),(d3,d5),同时有元素(d1,d5),

有元素(d1,d4),(d4,d5),同时有元素(d1,d5),

有元素(d2,d4),(d4,d5),同时有元素(d2,d5)。

1.4什么是线性结构?什么是非线性结构?举例说明。

[解答]

线性结构与非线性结构是针对数据的逻辑结构而言的。它们的主要区别是:线性结构表示的是数据元素之间一对一的关系,而非线性结构表示的是数据元素之间一对多或多对多的关系。线性结构具有以下特点:

①存在唯一的没有前驱、只有一个直接后继的“头”元素;

②存在唯一的没有后继、只有一个直接前驱的“尾”元素;

③除了“头”元素和“尾”元素之外,集合中的每个元素有且只有一个直接前驱、有且只有一个直接后继。

由以上特点可以看出,线性结构中的数据元素之间存在一对一的关系,结构中的数据元素依照它们的逻辑关系可以排成一个有“头”、有“尾”的序列。例如,前面所说的农历节气表,就是一个线性结构,它是一个从“春分”开始,然后是“雨水”,…,最后是“大寒”。这样一个序列。

除线性结构以外的结构称为非线性结构。在非线性结构中,各数据元素的关系不一定保持一个线性序列,每个数据元素可能与零个或多个数据元素有联系。也就是说,非线性结构中的数据元素之间存在一对多或者是多对多的关系。

例如,一个学校的教学组织关系可以构成一个有明显层次的数据结构:学校下属有若干学院,每个学院下设若干个系,每个系有多个研究所和教研组,有若干的学生班,这个一对多的关系的抽象就是非线性结构。

又如,对一个销售系统的各个连锁店及相互之间的联系的抽象是一个非线性结构,这个数据结构中的数据元素是各连锁店,数据元素之间的关系是各连锁店之间的联系,因为各连锁店之间都可以有联系,显然各连锁店之间的联系是多对多的联系。也就是说,每一个连锁店都可以与其余多个连锁店发生联系。这个结构也是非线性结构。

1.5数据的存储结构有哪几种?其中最常用的有哪几种?说明它们的特点。

[解答]

数据存储结构也称物理结构,它是数据的逻辑结构在计算机中的表示。数据的存储结构有顺序存储、链式存储、索引存储、散列存储四种方式。其中最常用的存储结构有顺序存储和链式存储两种。

在顺序存储方式中,要开辟一块连续的存储空间来存放数据结构;对每个数据元素给以等长的数据单元,结构中的数据元素按照它们之间的逻辑顺序依次存放于连续的内存单元中。顺序存储方式的特点是除了存储数据元素以外,不必耗费另外的空间,数据元素之间的关系是由数据元素在存储器中的邻接关系来表示的。由于数据元素在存储器中的物理顺序和它们之间的逻辑顺序一致,因此这种存储方式是非常直观的一种存储方式。

在链式存储方式中,数据元素可以存放在不连续的内存单元中,数据元素在存储器中的物理存放顺序可以和逻辑顺序不一致,数据元素之间的逻辑关系是通过指示数据元素存储地址的指针来表示的。因此,每个数据元素除了存储自身以外,同时还要存储指示其后件(或前件)的存储地址的指针,它们构成一个结点。也就是说,在链式存储方式中每个数据元素的存储映象是一个结点,它包括存储数据元素的数据域(也称作值域)和存储指针的指针域两部分,通过各结点的指针把各数据元素按照它们的逻辑关系链成一条“链”,从而清晰的表示了数据元素之间的逻辑关系。链式存储的明显优点是存储空间的利用比较灵活,数据元素的增减操作比较方便。

除了上述两种常用的存储方式以外,还有索引存储和散列存储方式。

在索引存储方式中,按照某种性质把一个大表的元素划分成若干个子表,使每个子表中的元素具有相同的性质。存储时以子表为单位存放,同时建立一个索引表,索引表中的每个索引项对应一个子表,指出该子表的起始地址、长度和子表的性质,这样能够给查找等操作

相关文档
最新文档