数据结构第1章作业

合集下载

数据结构第1-3章作业参考答案(严薇敏,吴伟民编著)

数据结构第1-3章作业参考答案(严薇敏,吴伟民编著)

操作结果 构造一个有理数 R,元素 r1, r2 分 被赋 参数 v1, v2 的值 DestroyRational (&R) 初始条件 有理数 R 已存在 操作结果 销毁有理数 R Get(R, k, &e) 初始条件 有理数 R 已存在,1 k 2 操作结果 用 e 返回有理数 R 的第 k 元的值 Put(&R, k, e) 初始条件 有理数 R 已存在,1 k 2,若 k=2,则 e≠0 操作结果 用 e 更新有理数 R 的第 k 元的值 IsAscending(R) 初始条件 有理数 R 已存在 操作结果 若有理数 R 的两个元素按升序排列,则返回 1,否则返回 0 IsDescending(R) 初始条件 有理数 R 已存在 操作结果 若有理数 R 的两个元素按降序排列,则返回 1,否则返回 0 Max(R, &e) 初始条件 有理数 R 已存在 操作结果 用 e 返回有理数 R 的两个元素中值较大的一个 Min(R, &e) 初始条件 有理数 R 已存在 操作结果 用 e 返回有理数 R 的两个元素中值较小的一个 }ADT Rational
}//Descending
//使 x y //使 temp>z
算法二如 ( 算法是冒泡排序算法)
void Descending(){ scanf(x, y, z);
if(x<y) x ↔ y ; if(y<z) y ↔ z ; if(x<y) x ↔ y ;
printf(x, y, z); }//Descending
第 2 页 共 12 页
操作结果 求有理数 R1 的绝对值,用有理数 R 返回 NegativeRational(&R, R1) 初始条件 有理数 R1 已存在 操作结果 求有理数 R1 的相 数,用有理数 R 返回 }ADT Rational

数据结构第一章习题及解答

数据结构第一章习题及解答

Chap1一、选择题1. 算法的计算量的大小称为计算的(B )。

A.效率 B. 复杂性 C. 现实性 D. 难度2.计算机算法指的是(1) C,它必须具备(2)B这三个特性。

(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列D. 调度方法(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性C. 确定性、有穷性、稳定性D. 易读性、稳定性、安全性3. 下面关于算法说法正确的是( D )。

A.算法最终必须由计算机程序实现B.为解决某问题的算法同为该问题编写的程序含义是相同的C. 算法的可行性(基本运算执行有限次)是指指令不能有二义性D. 以上几个都是错误的4.从逻辑上可以把数据结构分为( C )两大类。

A.动态结构、静态结构 B.顺序结构、链式结构C.线性结构、非线性结构 D.初等结构、构造型结构5.以下数据结构中,哪一个是线性结构( D )?A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串6.在下面的程序段中,对x的赋值语句的频度为( C )FOR i:=1 TO n DOFOR j:=1 TO n DOx:=x+1;A. O(2n) B.O(n) C.O(n2) D.O(log2n)7.程序段 FOR i:=n-1 DOWNTO 1 DOFOR j:=1 TO i DOIF A[j]>A[j+1]THEN A[j]与A[j+1]对换;其中 n为正整数,则最后一行的语句频度在最坏情况下是(C)。

A. O(n)B. O(nlogn)C. O(n3)D. O(n2)8.以下哪个数据结构不是多型数据类型(D)A.栈 B.广义表 C.有向图 D.字符串(始终是字符型的,不会存在其他类型)9.以下数据结构中,(A)是非线性数据结构A.树 B.字符串 C.队 D.栈二、判断题1.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。

( A )2.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法实际上就是程序了。

数据结构课后习题及解析第一章

数据结构课后习题及解析第一章

数据结构课后习题及解析第一章第一章习题一、问答题1.什么是数据结构?2.叙述四类基本数据结构的名称与含义。

3.叙述算法的定义与特性。

4.叙述算法的时间复杂度。

5.叙述数据类型的概念。

6.叙述线性结构与非线性结构的差别。

7.叙述面向对象程序设计语言的特点。

8.在面向对象程序设计中,类的作用是什么?9.叙述参数传递的主要方式及特点。

10.叙述抽象数据类型的概念。

二、判断题(在各题后填写“√”或“某”)1.线性结构只能用顺序结构来存放,非线性结构只能用非顺序结构来存放。

()2.算法就是程序。

()3.在高级语言(如C或PASCAL)中,指针类型是原子类型。

()三、计算下列程序段中某=某+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)某=某+1;四、试编写算法,求一元多项式Pn(某)=a+a某+a2某2+a3某3+…an某n的值Pn(某),并确定算法中的每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

注意:本题中的输入ai(i=0,1,…,n),某和n,输出为Pn(某)。

通常算法的输入和输出可采用下列两种方式之一:(1)通过参数表中的参数显式传递。

(2)通过全局变量隐式传递。

试讨论这两种方法的优缺点,并在本题算法中以你认为较好的一种方式实现输入和输出。

实习题设计实现抽象数据类型“有理数”。

基本操作包括有理数的加法、减法、乘法、除法,以及求有理数的分子、分母。

第一章答案1.3计算下列程序中某=某+1的语句频度for(i=1;i<=n;i++)for(j=1;j<=i;j++)for(k=1;k<=j;k++)某=某+1;【解答】某=某+1的语句频度为:T(n)=1+(1+2)+(1+2+3)+……+(1+2+……+n)=n(n+1)(n+2)/61.4试编写算法,求pn(某)=a0+a1某+a2某2+…….+an某n的值pn(某0),并确定算法中每一语句的执行次数和整个算法的时间复杂度,要求时间复杂度尽可能小,规定算法中不能使用求幂函数。

数据结构第1章-答案

数据结构第1章-答案

一、填空题01、数据结构是一门研究非数值计算的程序设计问题中计算机的(操作对象)以及它们之间的(关系和运算)等的学科。

02、数据结构被形式地定义为(D,R),其中D是(数据元素)的有限集合,R是D上的(关系)有限集合。

03、数据结构包括数据的(逻辑结构)、数据的(存储结构)和数据的(运算)这三个方面的内容。

04、数据结构按逻辑结构可分为两大类,它们分别是(线性结构)和(非线性结构)。

05、线性结构中元素之间存在(一对一)关系,树形结构中元素之间存在(一对多)关系,图形结构中元素之间存在(多对多)关系。

06、在线性结构中,第一个结点(没有)前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点(没有)后续结点,其余每个结点有且只有1个后续结点。

07、在树形结构中,树根结点没有(前驱)结点,其余每个结点有且只有(1)个前驱结点;叶子结点没有(后续)结点,其余每个结点的后续结点数可以(任意多个)。

08、在图形结构中,每个结点的前驱结点数和后续结点数可以(任意多个)。

09、数据的存储结构可用四种基本的存储方法表示,它们分别是(顺序)、(链式)、(索引)、(散列)。

10、对于给定的n个元素,可以构造出的逻辑结构有(集合)、(线性结构)、(树形结构)、(图状结构)四种。

11、数据的运算最常用的有5种,它们分别是(插入)、(删除)、(修改)、(查找)、(排序)。

12、一个算法的效率可分为(时间)效率和(空间)效率。

13、数据结构中评价算法的两个重要指标是算法的(时间复杂度)和(空间复杂度)。

14、一个数据结构在计算机中的(映射)称为存储结构。

15、算法的五个重要特性是(有穷性)、(确定性)、(可行性)、输入、输出。

16、已知如下程序段for (i=n; i>=1; i--) //语句1{ x++; //语句2for (j=n; j>=i; j--) //语句3y++; //语句4}语句 1 执行的频度为(n+1);语句2执行的频度为(n);语句3执行的频度为(n(n+3)/2);语句4执行的频度为(n(n+1)/2)。

数据结构第1-3章作业参考答案

数据结构第1-3章作业参考答案

数据结构第1~3章作业参考答案【1.4】【解法一】⑴抽象数据类型复数:ADT Complex{数据对象:D={ci|ci∈R, i=1,2, 其中R为实数集}数据关系:R={<c1,c2>| ci∈D, i=1,2, 其中c1为复数实部, c2为复数虚部}基本操作:InitComplex (&C,v1,v2)操作结果:构造一个复数C,元素c1, c2分别被赋以参数v1, v2的值。

DestroyComplex(&C)初始条件:复数C已存在。

操作结果:销毁复数C。

GetReal(C, &e)初始条件:复数C已存在。

操作结果:用e返回复数C实部的值。

Get Imaginary(C, &e)初始条件:复数C已存在。

操作结果:用e返回复数C虚部的值。

SetReal(&C, e)初始条件:复数C已存在。

操作结果:用e更新复数C实部的值。

Set Imaginary(&C, e)初始条件:复数C已存在。

操作结果:用e更新复数C虚部的值。

AdditionComplex (&C, C1, C2)初始条件:复数C1,C2已存在。

操作结果:复数C1与复数C2相加,用复数C返回其和。

SubstractComplex(&C, C1, C2)初始条件:复数C1,C2已存在。

操作结果:复数C1减去复数C2,用复数C返回其差。

MultipleComplex(&C, C1, C2 )初始条件:复数C1,C2已存在。

操作结果:复数C1与复数C2相乘,用复数C返回其积。

DividedComplex(&C, C1, C2)初始条件:复数C1,C2已存在,且C2≠0。

操作结果:复数C1除以复数C2,用复数C返回其商。

ModulusComplex(C, &e)初始条件:复数C已存在。

操作结果:求复数C的模,用e返回。

ConjugateComplex(&C, C1)初始条件:复数C1已存在。

数据结构作业题及答案

数据结构作业题及答案

数据结构作业题及答案第一章绪论1、简述下列概念:数据、数据元素、数据结构、逻辑结构、存储结构、线性结构、非线性结构。

数据:指能够被计算机识别、存储和加工处理的信息载体。

数据元素:就是数据的基本单位,在某些情况下,数据元素也称为元素、结点、顶点、记录。

数据元素有时可以由若干数据项组成。

数据结构:指的是数据之间的相互关系,即数据的组织形式。

一般包括三个方面的内容:数据的逻辑结构、存储结构和数据的运算。

逻辑结构:指各数据元素之间的逻辑关系。

存储结构:就是数据的逻辑结构用计算机语言的实现。

线性结构:数据逻辑结构中的一类,它的特征是若结构为非空集,则该结构有且只有一个开始结点和一个终端结点,并且所有结点都最多只有一个直接前趋和一个直接后继。

线性表就是一个典型的线性结构。

非线性结构:数据逻辑结构中的另一大类,它的逻辑特征是一个结点可能有多个直接前趋和直接后继。

2、常用的存储表示方法有哪几种?顺序存储方法:它是把逻辑上相邻的结点存储在物理位置相邻的存储单元里,结点间的逻辑关系由存储单元的邻接关系来体现。

由此得到的存储表示称为顺序存储结构。

链接存储方法:它不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的逻辑关系是由附加的指针字段表示的。

由此得到的存储表示称为链式存储结构。

索引存储方法:除建立存储结点信息外,还建立附加的索引表来标识结点的地址。

散列存储方法:就是根据结点的关键字直接计算出该结点的存储地址。

3、求解下列算法的时间复杂度(1)i=1;k=0 while(i<n){k=k+10*i;i++;}T(n)=n-1∴T(n)=O(n)这个函数是按线性阶递增的(2)i=0;k=0;do{k=k+10*i;i++;} while(i<n);T(n)=n∴T(n)=O(n)这也是线性阶递增的(3)i=1;j=0;while(i+j<=n) {if(i<j)j++; else i++;}T(n)=n/2∴T(n)=O(n)虽然时间函数是n/2,但其数量级仍是按线性阶递增的。

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

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

1. 填空(1)()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

【解答】数据元素(2)()是数据的最小单位,()是讨论数据结构时涉及的最小数据单位。

【解答】数据项,数据元素【分析】数据结构指的是数据元素以及数据元素之间的关系。

(3)从逻辑关系上讲,数据结构主要分为()、()、()和()。

【解答】集合,线性结构,树结构,图结构(4)数据的存储结构主要有()和()两种基本方法,不论哪种存储结构,都要存储两方面的内容:()和()。

【解答】顺序存储结构,链接存储结构,数据元素,数据元素之间的关系(5)算法具有五个特性,分别是()、()、()、()、()。

【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性(6)在一般情况下,一个算法的时间复杂度是()的函数。

【解答】问题规模(7)设待处理问题的规模为n,若一个算法的时间复杂度为一个常数,则表示成数量级的形式为(),若为n*log25n,则表示成数量级的形式为()。

【解答】Ο(1),Ο(nlog2n)【分析】用大O记号表示算法的时间复杂度,需要将低次幂去掉,将最高次幂的系数去掉。

2. 选择题⑴顺序存储结构中数据元素之间的逻辑关系是由()表示的,链接存储结构中的数据元素之间的逻辑关系是由()表示的。

A 线性结构B 非线性结构C 存储位置D 指针【解答】C,D【分析】顺序存储结构就是用一维数组存储数据结构中的数据元素,其逻辑关系由存储位置(即元素在数组中的下标)表示;链接存储结构中一个数据元素对应链表中的一个结点,元素之间的逻辑关系由结点中的指针表示。

⑵假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女间不能相互继承。

则表示该遗产继承关系的最合适的数据结构应该是()。

A 树B 图C 线性表D 集合【解答】B【分析】将丈夫、妻子和子女分别作为数据元素,根据题意画出逻辑结构图。

⑶算法指的是()。

数据结构第一章考试题库(含答案)

数据结构第一章考试题库(含答案)

数据结构第一章考试题库(含答案)数据结构第一章考试题库(含答案)一、选择题1. 以下哪种数据结构是先进先出(FIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:B2. 在队列中,元素的插入操作称为什么?A. EnqueueB. DequeueC. PushD. Pop答案:A3. 哪种数据结构是一种不允许重复元素的集合?A. 栈B. 队列C. 链表D. 集合答案:D4. 以下哪种数据结构是后进先出(LIFO)的?A. 栈B. 队列C. 链表D. 哈希表答案:A5. 使用链表实现的栈或队列的时间复杂度是多少?A. O(1)B. O(n)C. O(log n)D. O(n^2)答案:A二、填空题1. 广度优先搜索(BFS)使用的数据结构是______。

答案:队列2. 深度优先搜索(DFS)使用的数据结构是______。

答案:栈3. 在二叉树中,每个节点最多有几个子节点?答案:24. 快速排序使用的分治策略是将数组分成几个子数组进行排序?答案:25. 哈希表的平均查找时间复杂度是多少?答案:O(1)三、简答题1. 请简要解释栈和队列的区别。

答案:栈是一种后进先出(LIFO)的数据结构,只能在栈顶进行插入和删除操作;队列是一种先进先出(FIFO)的数据结构,只能在队尾插入,在队头删除。

2. 请解释什么是链表。

答案:链表是一种动态数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。

与数组不同,链表的节点在内存中可以不连续存储,通过指针来链接每个节点。

3. 请简述快速排序的思想和算法步骤。

答案:快速排序使用分治的思想,首先选择一个元素作为基准值,然后将数组划分为两个子数组,小于基准值的元素放在左侧,大于基准值的元素放在右侧。

然后对左右子数组递归地进行快速排序,直到排序完成。

4. 请解释什么是哈希表及其应用场景。

答案:哈希表是一种基于哈希函数进行查找的数据结构,通过将关键字映射到哈希表中的位置来实现高效的查找。

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

第1章绪论
一、选择题
1. 算法的计算量的大小称为计算的()。

A.效率 B. 复杂性 C. 现实性 D. 难度
2. 算法的时间复杂度取决于()
A.问题的规模 B. 待处理数据的初态 C. A和B
3.计算机算法指的是(1),它必须具备(2)这三个特性。

(1) A.计算方法 B. 排序方法 C. 解决问题的步骤序列 D. 调度方法
(2) A.可执行性、可移植性、可扩充性 B. 可执行性、确定性、有穷性
C. 确定性、有穷性、稳定性
D. 易读性、稳定性、安全性
4.一个算法应该是()。

A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C.
5. 下面关于算法说法错误的是()
A.算法最终必须由计算机程序实现
B.为解决某问题的算法同为该问题编写的程序含义是相同的
C. 算法的可行性是指指令不能有二义性
D. 以上几个都是错误的
6. 下面说法错误的是()
(1)算法原地工作的含义是指不需要任何额外的辅助空间
(2)在相同的规模n下,复杂度O(n)的算法在时间上总是优于复杂度O(2n)的算法(3)所谓时间复杂度是指最坏情况下,估算算法执行时间的一个上界
(4)同一个算法,实现语言的级别越高,执行效率就越低
A.(1) B.(1),(2) C.(1),(4) D.(3)
7.从逻辑上可以把数据结构分为()两大类。

A.动态结构、静态结构 B.顺序结构、链式结构
C.线性结构、非线性结构 D.初等结构、构造型结构
8.以下与数据的存储结构无关的术语是()。

A.循环队列 B. 链表 C. 哈希表 D. 栈
9.以下数据结构中,哪一个是线性结构()?
A.广义表 B. 二叉树 C. 稀疏矩阵 D. 串
10.以下那一个术语与数据的存储结构无关?()
A.栈 B. 哈希表 C. 线索树 D. 双向链表
11.在下面的程序段中,对x的赋值语句的频度为()
FOR i:=1 TO n DO
FOR j:=1 TO n DO
x:=x+1;
A. O(2n) B.O(n) C.O(n2) D.O(log2n)
12.程序段 FOR i:=n-1 DOWNTO 1 DO
FOR j:=1 TO i DO
IF A[j]>A[j+1]
THEN A[j]与A[j+1]对换;
其中 n为正整数,则最后一行的语句频度在最坏情况下是()
A. O(n)
B. O(nlogn)
C. O(n3)
D. O(n2)
二、判断题
1. 数据元素是数据的最小单位。

( )
2. 记录是数据处理的最小单位。

( )
3. 数据的逻辑结构是指数据的各数据项之间的逻辑关系;( )
4.算法的优劣与算法描述语言无关,但与所用计算机有关。

( )
5.健壮的算法不会因非法的输入数据而出现莫名其妙的状态。

( )
6.算法可以用不同的语言描述,如果用C 语言或PASCAL语言等高级语言来描述,则算法
实际上就是程序了。

( )
7.程序一定是算法。

( )
8.数据的物理结构是指数据在计算机内的实际存储形式。

( )
9. 数据结构的抽象操作的定义与具体实现有关。

( )
10. 在顺序存储结构中,有时也存储数据结构中元素之间的关系。

( )
11. 顺序存储方式的优点是存储密度大,且插入、删除运算效率高。

( )
12. 数据结构的基本操作的设置的最重要的准则是,实现应用程序与存储结构的独立。

( )
13. 数据的逻辑结构说明数据元素之间的顺序关系,它依赖于计算机的储存结构. ( )
三、填空
1.数据的物理结构包括的表示和的表示。

2. 对于给定的n个元素,可以构造出的逻辑结构有(1),(2),(3),__(4)_四种。

3.数据的逻辑结构是指。

4.一个数据结构在计算机中称为存储结构。

5.抽象数据类型的定义仅取决于它的一组__(1)_,而与_(2)_无关,即不论其内部结构
如何变化,只要它的_(3)_不变,都不影响其外部使用。

6.数据结构中评价算法的两个重要指标是
7. 数据结构是研讨数据的_(1)_和_(2)_,以及它们之间的相互关系,并对与这种结构
定义相应的_(3)_,设计出相应的(4)_。

8.一个算法具有5个特性: (1)、(2)、(3),有零个或多个输入、有一个或多
个输出。

9.已知如下程序段
FOR i:= n DOWNTO 1 DO {语句1}
BEGIN
x:=x+1; {语句2}
FOR j:=n DOWNTO i DO {语句3}
y:=y+1; {语句4}
END;
语句1执行的频度为(1);语句2执行的频度为(2);语句3执行的频度为(3);
语句4执行的频度为(4)。

10.在下面的程序段中,对x的赋值语句的频度为______(表示为n的函数)
FOR i:=1 TO n DO
FOR j:=1TO i DO
FOR k:=1 TO j DO
x:=x+delta;
11.下面程序段中带下划线的语句的执行次数的数量级是:
i:=1; WHILE i<n DO i:=i*2;
12. 下面程序段中带下划线的语句的执行次数的数量级是( )。

i:=1;
WHILE i<n BEGIN FOR j:=1 TO n DO x:=x+1;i:=i*2 END;
13. 下面程序段中带有下划线的语句的执行次数的数量级是( )
i:=n*n WHILE i<>1 DO i:=i div 2;
14. 计算机执行下面的语句时,语句s的执行次数为 _______ 。

FOR(i=l;i<n-l;i++)
FOR(j=n;j>=i;j--)
s;
15. 下面程序段的时间复杂度为________。

(n>1)
sum=1;
for (i=0;sum<n;i++) sum+=1;
16.设m.n均为自然数,m可表示为一些不超过n的自然数之和,f(m,n)为这种表示方式的数目。

例f(5,3)=5,有5种表示方式:3+2,3+1+1,2+2+1,2+1+1+1,1+1+1+1+1。

①以下是该函数的程序段,请将未完成的部分填入,使之完整
int f(m,n)
int m,n;
{ if(m==1)
return (1) ;
if(n==1){
return (2) ;}
if(m<n)
{return f(m,m);}
if (m==n)
{return 1+ (3) ;}
return f(m.n-1)+f(m-n, (4) );
}
②执行程序,f(6,4)= 。

四、应用题
1. 数据结构是一门研究什么内容的学科?
2. 数据元素之间的关系在计算机中有几种表示方法?各有什么特点?
3. 数据类型和抽象数据类型是如何定义的。

二者有何相同和不同之处,抽象数据类型的主要特点是什么?使用抽象数据类型的主要好处是什么?
4. 回答问题
(1)在数据结构课程中,数据的逻辑结构,数据的存储结构及数据的运算之间存在着怎样的关系?
(2)若逻辑结构相同但存储结构不同,则为不同的数据结构。

这样的说法对吗?举例说明之。

(3)在给定的逻辑结构及其存储表示上可以定义不同的运算集合,从而得到不同的数据结构。

这样说法对吗?举例说明之。

(4)评价各种不同数据结构的标准是什么?
5.评价一个好的算法,您是从哪几方面来考虑的?
6.解释和比较以下各组概念
(1)抽象数据类型及数据类型
(2)数据结构、逻辑结构、存储结构
(3)抽象数据类型
(4)算法的时间复杂性
(5)算法
(6)频度
7. 根据数据元素之间的逻辑关系,一般有哪几类基本的数据结构?
8.对于一个数据结构,一般包括哪三个方面的讨论?
9. 当你为解决某一问题而选择数据结构时,应从哪些方面考虑?
10. 若将数据结构定义为一个二元组(D,R),说明符号D,R 应分别表示什么?
11.数据结构与数据类型有什么区别?
12.数据的存储结构由哪四种基本的存储方法实现?。

相关文档
最新文档