数据结构_陈明_习题答案.pdfVIP

  1. 1、本文档共40页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

数据结构_陈明_习题答案

习题一答案

1.填空题

(1)数据元素的有限集合,k上关系的有限集合

(2)顺序存储(连续),链式存储(不连续)

(3)有穷性,确定性,可行性,输入,输出

(4)时间复杂度,空间复杂度

3.简述下列术语

(1)数据——是信息的载体,它是描述客观事物的数、字符以及所有能输入到计算机中被计算机程序识

别、加工处理的信息的集合。

(2)数据元素——是数据的基本单位,是对一个客观实体的数据描述。一个数据元素可以由一个或若

干个数据项组成。数据元素也被称为结点或记录。

(3)数据对象——具有相同性质的数据元素的集合就是一个数据对象,它是数据的一个子集。

(4)数据结构——数据结构就是数据之间的相互关系(即数据的组织形式)及在这些数据上定义的数据

运算方法的集合。

(5)存储结构——数据的存储结构是数据的逻辑结构在计算机内部的表示或实现,又称为数据的物理结

构,它包括数据元素的表示和关系的表示。

(6)数据类型——是具有相同性质的计算机数据的集合及定义在这个数据集合上的一组操作的总称。

5.常用的存储表示方法有哪几种?

(1)顺序存储方法——该方法是将逻辑上相邻的结点存储在物理位置上也相邻的存储单元里,结点之间

的逻辑关系由存储单元的邻接关系来表示(也就是说,只存储结点的值,不存储结点之间的关系),

这种存储表示称为顺序存储结构。

(2)链式存储方法——链式存储方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的关系由附

加的指针来表示,指针指向结点的邻接结点,这样将所有结点串联在一起,称为链式存储结构。

(3)索引存储方法——索引存储是在存储结点信息的同时,再建立一个附加的索引表,然后利用索引表

中索引项的值来确定结点的实际存储单元地址。

(4)散列存储方法——散列存储的基本思想是根据结点的关键字直接计算出结点的存储地址。

7.举例说明一下数据结构和算法的关系。

通过公式:程序=数据结构+算法我们可以比较直观地看出二者的关系,即数据结构(包个完整的程

序括逻辑结构和存储结构)的设计和算法的编写是程序设计的两个关键步骤,一就是由一套合理的数据结

构和建立在该结构上的算法构成的。具体的说:在进行程序设计之前我们首先要为待处理的数据设计一个

合理的逻辑结构,进而为之设计一种适合的存储结构,因为光有逻辑结构是不够的,只有存储结构才是与

计算机语言直接相关的!有了这一套前期准备,我们才能在这个基础上设计算法,用一种计算机语言去处

理这些数据,最终达到程序设计的目的。当然,随着逻辑结构和存储结构的不同,我们设计的算法也会有

所差别,这在以后的学习中会体会到。下面通过一个简单的例子说明这种关系。

假设我们要设计一个两个n阶方阵相乘的程序:已知两个n阶方阵A和B,我们要计算它们的乘积,

得到一个新的n阶方阵C。那么在设计这个程序之前首先想到得就是设计一种逻辑结构表示方阵,这里我

们用二维数组表示它们,因为二维数组最能直观地表示这种结构;有了逻辑结构了自然还要为之设计一种

存储结构,这里我们选择顺序存储方法,因为C语言对这种存储结构给予了很好的支持,例如定义一个n

阶实型的二维数组A只要用floatA[n][n];这条语句就可以了,C语言在内存种为之分配了一个n*n

长度的顺序存储空间(注意:C语言默认二维数组是按行优先存储的),是不是很方便?有了这些准备,我

们就可以设计算法进行计算了,其算法如下:

voidmatrixmult(floatA[n][n],floatB[n][n],floatC[n][n])

{

inti,j,k;

floatx;

for(i=0;in;i++)

{

for(j=0;jn;j++)

{

x=0;

for(k=0;kn;k++)

{

x+=A[i][k]*B[k][j];

文档评论(0)

193****8031 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档