数据结构课程--课后习题答案

  • 格式:doc
  • 大小:930.50 KB
  • 文档页数:44

下载文档原格式

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

/《数据结构简明教程》练习题及参考答案

练习题1

1. 单项选择题

(1)线性结构中数据元素之间是()关系。

A.一对多

B.多对多

C.多对一

D.一对一

答:D

(2)数据结构中与所使用的计算机无关的是数据的()结构。

A.存储

B.物理

C.逻辑

D.物理和存储

[

答:C

(3)算法分析的目的是()。

A.找出数据结构的合理性

B.研究算法中的输入和输出的关系

C.分析算法的效率以求改进

D.分析算法的易懂性和文档性

答:C

(4)算法分析的两个主要方面是()。

A.空间复杂性和时间复杂性

B.正确性和简明性

C.可读性和文档性

D.数据复杂性和程序复杂性

>

答:A

(5)计算机算法指的是()。

A.计算方法

B. 排序方法

C.求解问题的有限运算序列

D.调度方法

答:C

(6)计算机算法必须具备输入、输出和()等5个特性。

A.可行性、可移植性和可扩充性

B.可行性、确定性和有穷性

C.确定性、有穷性和稳定性

D.易读性、稳定性和安全性

答:B

<

2. 填空题

(1)数据结构包括数据的①、数据的②和数据的③这三个方面的内容。

答:①逻辑结构②存储结构③运算

(2)数据结构按逻辑结构可分为两大类,它们分别是①和②。

答:①线性结构②非线性结构

(3)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。

答:①数据元素②关系

(4)在线性结构中,第一个结点①前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点②后继结点,其余每个结点有且只有1个后继结点。

~

答:①没有②没有

(5)在树形结构中,树根结点没有①结点,其余每个结点有且只有②个前驱结点;叶子结点没有③结点,其余每个结点的后继结点数可以是④。

答:①前驱②1 ③后继④任意多个

(6)在图形结构中,每个结点的前驱结点数和后继结点数可以是()。

答:任意多个

(7)数据的存储结构主要有四种,它们分别是①、②、③和④存储结构。

答:①顺序②链式③索引④哈希

(8)一个算法的效率可分为①效率和②效率。

~

答:①时间②空间

3. 简答题

(1)数据结构和数据类型两个概念之间有区别吗

答:简单地说,数据结构定义了一组按某些关系结合在一起的数组元素的集合。数据类型不仅定义了一组数据元素,而且还在其上定义了一组操作。

(2)简述线性结构、树形结构和图形结构的不同点。

答:线性结构反映结点间的逻辑关系是一对一的,树形线性结构反映结点间的逻辑关系是一对多的,图在结构反映结点间的逻辑关系是多对多的。

(3)设有采用二元组表示的数据逻辑结构S=(D,R),其中D={a,b,…,i},R={(a,b),(a,c),(c,d),(c,f),(f,h),(d,e),(f,g),(h,i)},问相对于关系R,哪些结点是开始结点,哪些结点是终端结点

答:该逻辑结构为树形结构,其中a结点没有前驱结点,称为根结点,b、e、g、i结点没有后继结点,是终端结点,也称为叶子结点。

&

(4)以下各函数是算法中语句的执行频度,n为问题规模,给出对应的时间复杂度:

T 1(n )=n log 2n -1000log 2n T 2(n )=3log 2n -1000log 2n

T 3(n )=n 2

-1000log 2n

T 4(n )=2n log 2n -1000log 2n

答:T 1(n )=O(n log 2n ),T 2(n )=O( ),T 3(n )=O(n 2

),T 4(n )=O(n log 2n )。 (5)分析下面程序段中循环语句的执行次数。

int j=0,s=0,n=100;

.

do { j=j+1;

s=s+10*j;

} while (j

答:j =0,第1次循环:j =1,s =10。第2次循环:j =2,s =30。第3次循环:j =3,s =60。第4次循环:j =4,s =100。while 条件不再满足。所以,其中循环语句的执行次数为4。

(6)执行下面的语句时,语句s++的执行次数为多少

int s=0;

for (i=1;i

*

for (j=n;j>=i;j--)

s++;

答:语句s 的执行次数2

)

2)(3(3)1()1(121

21-+=

++-+=+-=∑∑∑-=-==n n n n i n n i n i i

n

j 。

(7)设n 为问题规模,求以下算法的时间复杂度。

void fun1(int n) { int x=0,i;

for (i=1;i<=n;i++)

for (j=i+1;j<=n;j++) /

x++;

}

答:其中x++语句属基本运算语句,∑∑∑

=+==-=

-=

=

n i n i j n

i n n i n n T 1

1

1

2

)1()(1)(=O(n 2

)。 (8)设n 为问题规模,是一个正偶数,试计算以下算法结束时m 的值,并给出该算法的时间复杂度。

void fun2(int n) { int m=0;

for (i=1;i<=n;i++)

for (j=2*i;j<=n;j++) ~

m++;

}

3log 2n