数据结构第1章习题讲评(13通本)

合集下载

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

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

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)中,指针类型是原子类型。

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

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

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

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

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

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

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

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

《数据结构基础教程》习题及解答

《数据结构基础教程》习题及解答

《数据结构基础教程》习题及解答数据结构基础教程习题及解答第一章:数据结构简介1.1 什么是数据结构?数据结构是指相互之间存在一种或多种特定关系的数据元素的集合,包括数据的逻辑结构、物理结构和数据元素之间的运算。

1.2 数据的逻辑结构有哪些?数据的逻辑结构包括线性结构、树形结构和图状结构。

1.3 数据的物理结构有哪些?数据的物理结构包括顺序存储结构和链式存储结构。

1.4 数据结构的主要目标是什么?数据结构的主要目标是提高数据的存储效率和运算效率。

第二章:线性表2.1 线性表的定义线性表是由n(≥0)个数据元素组成的有限序列。

线性表是一种常见的数据结构,常用的实现方式包括数组和链表。

2.2 线性表的顺序存储结构线性表的顺序存储结构是将线性表中的元素存储在连续的存储空间中,通过元素在内存中的物理位置来表示元素之间的关系。

2.3 线性表的链式存储结构线性表的链式存储结构是通过指针将线性表中的元素连接在一起,每个元素包括数据域和指针域。

2.4 线性表的基本操作包括初始化线性表、插入元素、删除元素、查找元素等。

第三章:栈与队列3.1 栈的定义与特性栈是一种具有后进先出特性的线性表,只允许在一端进行插入和删除操作,被称为栈顶。

3.2 栈的顺序存储结构和链式存储结构栈的顺序存储结构和链式存储结构与线性表的存储结构类似,不同之处在于栈只允许在一端进行插入和删除操作。

3.3 栈的应用栈在表达式求值、函数调用和递归等场景中有广泛应用。

3.4 队列的定义与特性队列是一种具有先进先出特性的线性表,允许在一端插入元素,在另一端删除元素。

3.5 队列的顺序存储结构和链式存储结构队列的顺序存储结构和链式存储结构与线性表的存储结构类似,不同之处在于队列允许在一端插入元素,在另一端删除元素。

3.6 队列的应用队列在模拟排队系统、操作系统进程调度等场景中有广泛应用。

第四章:树与二叉树4.1 树的基本概念树是由n(≥0)个节点组成的有限集合,其中有一个称为根节点,除了根节点之外的其余节点被分为m(m≥0)个互不相交的集合,每个集合本身又是一棵树。

数据结构(习题一)资料讲解共43页文档

数据结构(习题一)资料讲解共43页文档
40、人类法律,事物有规律,这是不 容忽视 的。— —爱献 生
谢谢!
36、自己的鞋子,自己知道紧在哪里。——西班牙
37、我们唯一不会改正的缺点是软弱。——拉罗什福科
xiexie! 38、我这个人走得很慢,但是我从不后退。——亚伯拉罕·林肯
数据结构(习题一)资料讲解
36、如果我们国家的法律中只有某种 神灵, 而不是 殚精竭 虑将神 灵揉进 宪法, 总体上 来说, 法律就 会更好 。—— 马克·吐 温 37、纲纪废弃之日,便是暴政兴起之 时。— —威·皮 物特
38、若是没有公众舆论的支持,法律 是丝毫 没有力 量的。 ——菲 力普斯 39、一个判例造出另一个判例,它们 迅速累 聚,进 而变成 法律。 ——朱 尼厄斯
39、勿问成功的秘诀为何,且尽全力做你思则罔,思而不学则殆。——孔子

数据结构第一章课后习题与答案资料

数据结构第一章课后习题与答案资料

数据结构第一章课后习题与答案资料1.什么是数据结构?答:数据结构是指数据对象以及数据对象之间的关系、操作和约束的一种逻辑结构。

它关注如何将数据以及数据之间的关系组织起来,以便更高效地进行操作和使用。

2.数据结构的分类有哪些?答:数据结构可以分为线性数据结构和非线性数据结构。

线性数据结构包括数组、链表、栈和队列;非线性数据结构包括树和图。

3.什么是算法?答:算法是指解决特定问题的一系列步骤和规则。

它可以描述为一个有限的指令集,用于将输入数据转换为输出结果。

4.算法的特征有哪些?答:算法具有以下特征:•输入:算法必须有输入,可以是零个或多个。

•输出:算法必须有输出,可以是零个或多个。

•有穷性:算法必须在有限步骤内结束。

•确定性:算法的每一步骤必须明确且无歧义。

•可行性:算法的每一步骤必须可行,即可以执行。

5.算法的时间复杂度是什么?如何表示时间复杂度?答:算法的时间复杂度是指算法执行所需的时间。

它通常用大O符号表示。

常见的时间复杂度有O(1)、O(n)、O(n^2)等。

6.算法的空间复杂度是什么?如何表示空间复杂度?答:算法的空间复杂度是指算法执行所需的额外空间。

它通常用大O符号表示。

常见的空间复杂度有O(1)、O(n)、O(n^2)等。

7.什么是数据的逻辑结构?答:数据的逻辑结构是指数据对象之间的关系。

常见的逻辑结构有线性结构、树形结构和图形结构。

8.什么是数据的存储结构?答:数据的存储结构是指数据在计算机内存中的表示方式。

常见的存储结构有顺序存储结构和链式存储结构。

9.顺序存储结构和链式存储结构有什么区别?答:顺序存储结构将数据存储在一块连续的内存空间中,可以随机访问元素,但插入和删除操作需要移动大量元素。

链式存储结构将数据存储在不连续的内存空间中,通过指针相连,插入和删除操作只需要修改指针,但访问元素需要遍历链表。

10.数组和链表的区别是什么?答:数组是一种顺序存储结构,元素在内存中连续存储,可以通过下标直接访问元素;链表是一种链式存储结构,元素在内存中不连续存储,通过指针相连。

《数据结构》第一章 绪论 习题

《数据结构》第一章  绪论    习题

《数据结构》第一章绪论习题1-1 什么叫数据?什么叫数据元素?什么叫数据项?1-2 什么叫数据的物理结构?什么叫数据的存储结构?什么叫数据的操作?1-3 数据结构课程主要讨论哪三个方面的问题?1-4 分别画出线性结构、树结构和图结构的逻辑示意图。

1-5 什么叫类型?什么叫数据类型?什么叫抽象数据类型?1-6 怎样利用抽象数据类型设计大型软件?1-7 什么叫算法?算法的5个性质是什么?1-8 根据算法的性质解释算法和程序的区别?1-9 评判算法的优劣有哪几种方法?1-10 什么叫算法的时间复杂度?怎样表示算法的时间复杂度?1-11 设n为已在算法前边定义的整数类型,并已知n为正整数,分析下列各算法中加下划线语句的执行次数,并给出各算法的时间复杂度T(n)。

(1) int i = 1, k = 0;while (i < n-1){k = k + 10 * i; i = i + 1;}(2) int i = 1, k = 0;do{k = k + 10 * i; i = i + 1;}while (i != n);(3) int i = 1, j = 1;while (i <= n && j <= n){i = i + 1; j = j + 1;}(4) int x = n; /* n > 1 */int y = 0;while(x >= (y+1)*(y+1))y++;(5) int i, j, k, x = 0;for (i = 0; i < n; i++)for (j = 0; j < i; j++)for (k = 0; k < j; k++)x = x + 2;1-12 设求解同一个问题有三种算法,三种算法各自的时间复杂度分别为O(n2),O(2n)和O(nlg n),哪种算法最可取?为什么?1-13 按增长率从小到大的顺序排列下列各组函数:(1)2100,(3/2)n,(2/3)n,(4/3)n(2)n,n3/2,n2/3,n!,n n(3)lb n,n×lb n,n lb n,n*1-14 下面是几个典型的时间复杂度函数估值问题:(1)当n为正整数时,n取何值能使2n> n3;(2)说明2n+ n3是O(2n);(3)给出5(n2 + 6) / (n + 3) + 7lg n的O值估计。

数据结构 习题第一章

数据结构 习题第一章

习题1.1选择题1、数据结构是一门研究计算机解决实际问题中( A )以及它们之间的( B )和运算等的学科。

(1)A、数据元素 B、计算方法 C、逻辑存储 D、数据映像(2)A、结构 B、关系 C、运算 D、算法2、数据结构可以用二元组来表示,它包括( A )集合K和K上的( C )集合R。

A、数据元素B、存储结构C、元素之间的关系D、逻辑结构3、数据结构在计算机内存中的表示是指( A )。

A、数据的存储结构B、数据结构C、数据的逻辑结构D、数据元素之间的关系4、在数据结构中,与所使用的计算机无关的是数据的( A )结构。

A、逻辑B、存储C、逻辑和存储D、物理5、以下说法中正确的是( D )。

A、数据元素是数据的最小单位B、数据项是数据的基本单位C、数据结构是带结构的各数据项的集合D、一些表面上很不相同的数据可以有相同的逻辑结构1.2 填空题1、线性结构中元素之间存在(一对一)关系,树型结构中元素之间存在(一对多)关系,图型结构中元素之间存在(多对多)关系。

2、数据结构是研究数据的(逻辑结构)和(存储结构)以及它们之间的相互关系,并对这种结构定义相应的操作,设计出相应的(算法),而确保经过这些运算后所得到的新结构是原来的结构类型。

3、一个算法的时间复杂度是该算法包含的(简单操作次数)的多少,它是一个算法运行时间的(相对量度),一个算法的空间复杂度是指该算法在运行过程中临时占用的(存储空间)的大小。

4、一个算法的时间复杂度通常用问题规模的(最高数量级)形式表示,当一个算法的时间复杂度与问题的n大小无关时,则表示为(O(1));成正比时,表示为(O(n)),成平方时,则表示为(O(n2))。

5、数据结构、数据元素和数据项在计算机中的映射(或表示)分别称为存储结构、结点和数据域。

这句话是(正确)。

(填写正确或错误)1.3 应用题1、给定的两个数据结构如图1-1所示,回答以下问题:(a)图1-1 用图形表示法表示的两种数据结构(1) 用二元组表示法给出该数据结构的逻辑结构?(2)判断属于哪一种逻辑结构? 解:(a) D1=(K ,R ),其中: K={1,2,3,4,5,6} R={r}r={<1,2>,<2,3>,<3,4>,<4,5>,<5,6>} 线性结构 (b )D2=(K ,R ),其中: K={a,b,c,d,e,f,g,h,i} R={r}r={<a,b>,<a,c>,<c,d>,<c,e>,<d,f>,<d,g>,<e,g>,<e,h>,<g,i>}图型结构 2、对下列几种用二元组表示的数据结构,画出对应的逻辑结构图形表示,并指出属于哪一种结构。

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

… …

4 5




典型的错误 (错误2)
当n=6时,执行3次; 当n=7时,执行3次; 当n=3时,执行2次; 当n=3时,执行3次; 当n=8时,执行4次; 当n=9时,执行4次; … 由此推知,当n=n时,T(n)与 n的关系为: 解: 输出语句cout为基本语句, 2T(n)-n ≥n 设T(n)为执行次数。 当n=1时,执行1次; 点评 根据所列出的循环变 当n=2时,执行2次; 量n的变化过程, 无法看出 当n=3时,执行2次; 可以推知不等式 当n=3时,执行3次; 2T(n)-n ≥n 当n=4时,执行3次; 是成立的. 当n=5时,执行3次;
(2)void binary(int n) { while(n) { cout<<n; n=n/2; } }

典型的错误 (错误3)
(2)void binary(int n) { while(n) { cout<<n; n=n/2; } }
解: ∵n>0为非零正整数 n 执行次数 1 1 2 2 3 2 4 3 5 3 6 3 7 3
T= (n i 1)
i 1
(n 1)n 解 该算法具有二重循环结 = 2 构,显然输出语句cout也是原 2) ≈ O ( n 操作语句。 当外层第1次循环时 i= 1 答:输出语句的执 n 内层循次数为: 行次数是 (n+1)n/2, 当外层第2次循环时 i= 2 该算法的时间复杂 n-1 内层循次数为: 度为O(n2)。
× n) O(n ) O(log × O(n )
O(210 )
2 3
× n ×
n3
2
O(2n) O(2n+1) O(n)
× ×
2 确定下列算法中输出语句的执行次数,并给出算法的 时间复杂度(n为非零正整数)。 (1) void combi(int n) { int i,j,k=0; for(i=1;i<=n;i++) for(j=i;j<=n;j++) { cout<<j; k++; } }
解: ∵n>0为非零正整数 n 执行次数 1 1 2 2 3 2 4 3 5 3 6 3 7 3
n 8 9
执行次数 4 4
15 16
① ∴T(n)=20 × 1+21 ×2 +22 ×3+…+2n-1 ×n ②2T(n)=21 ×1+22×2+…+ 2n × n ①- ②得 点评 2.①式是怎么得来的? 依据是什么没有任何说明, 由循环的分析过程,根本 无法推出此式。
等级 D+ D DF
分数 69 65 60 不及格
1.以下分别为几种算法关于问题规模的执行时间, 请给出每种算法的时间复杂度。
(1)100n3 (2)6n2-12n+1 (3)1024 (4)n+2log2n (5)n(n+1)(n+1)/6 (6)2n+1+100n
O(n3 )
O(n2 ) O(1 )
典型的错误
点评: (1) void combi(int n) 外循环 1.没有指明算法中哪条 { int i,j,k=0; 语句是原操作语句,就 for(i=1;i<=n;i++) 设其执行次数为T(n),让 for(j=i;j<=n;j++) 人感到莫明其妙; 内循环 { cout<<j; k++; } 2.将互相嵌套的多层循 } 环的内层循环与外层循 环弄颠倒了。无法理解 为何会有如此低级的错 解: ? 设原操作语句执行次数为T(n)。 误? 3.“则有cout的执行次数 由题意得 为n”是错误的结论. 内 ×:初值i=1,终值i=n 反映出分析能力差. × 则有cout的执行次数为n 既然已得出“ cout的执 外 ×:j=i(初值),j=n(终值) 行次数为n”的结论,为何 所以 n 下面还要求T(n)? T(n)= (n i 1) 反映出思维的逻辑性差。 i 1 …
T-1


(2)void binary(int n) { while(n) { cout<<n; n=n/2; } }
第3次循环结束时n=n/8=n/2 3
由此推知第T-1次结束时
n= n(1/2) 由while循环条件,n>=2 此时必有 n(1/2) T-1 > = 1
T-1
解:循环表量该n的初值为n 点评 4.没正确理解和掌握C语 ,终值为2 言的基本语法规则。 故cout的执行次数为n/2 设原操作语句的执行次数为 T(n) 循环过程如下: 第1次循环结束时 n=n/2 第2次循环结束时 n=n/4 =n/22
(2)void binary(int n) { while(n>=1) while(n) while(n!=0) { cout<<n; n=n/2; } }
第2次循环结束时 2 n(1/2) n/4 = n2= 第3次时循环结束时 n3= n/8=n(1/2)3 …
(2)void binary(int n) { while(n>=1) while(n) while(n!=0) { cout<<n; n=n/2; } }
数据结构第一章
作业讲评
一、存在的主要问题 1、解题过程不够严谨、条理性和逻辑性差, 分析问题的能力仍有待提高;。 2、做了题,但没有明确回答作业规定的求解 问题的答案; 3、个别同学没做完或只抄题就交; 4、个别同学写字太撩草,作业无法批改。
二、作业评定等级的含义 等级 A+ A AB+ B BC+ C C分数 100 95 90 89 85 80 79 75 70
(2) void binary(int n) { while(n) { cout<<n; n=n/2; } }
(1) void combi(int n) { int i,j,k=0; for(i=1;i<=n;i++) for(j=i;j<=n;j++) { cout<<j; k++; } }
当外层第i次循环时 n-i+1 内层循次数为: 因此,输出语句的执 行次数n T为:
由此推知第T-1次结束时 T-1 nT-1= n(1/2) 由while循环条件,此时 解 :输出语句是原操 T-1 作语句,设第i次循环时,循 n(1/2) > = 1 环变量的值为ni T-1 n 即 <= 2 设输出语句共执行了T次。 T<= log2n+1 第1次循环结束时 1 ≈ O (log n ) 2 n(1/2) n/2 = n1=
解:循环表量该n的初值为n ,终值为2 故cout的执行次数为n/2 设原操作语句的执行次数为 T(n) 循环过程如下: 第1次循环结束时 n=n/2 第2次循环结束时 n=n/4 =n/22
第3次循环结束时n=n/8=n/2 3
由此推知第T-1次结束时
n= n(1/2) 由while循环条件,n>=2 此时必有 n(1/2) T-1 > = 1 点评 1.循环变量终值为2 没正确理解和掌握C语言的 基本语法规则。 2.“故cout的执行次数为 n/2”的结论是错误的。 3.原操作语句是哪条语 句 ?,没有指明。
n 8 9
执行次数 4 4
15 16
① ∴T(n)=20 × 1+21 ×2 +22 ×3+…+2n-1 ×n ②2T(n)=21 ×1+22×2+…+ 2n × n ①- ②得 点评 1.T(n)表示什么量? 没有任何说明。
… …

4 5


(2)void binary(int n) { while(n) { cout<<n; n=n/2; } }
答:输出语句的执行次 数小于或等于log2n+1, 该算法的时间复杂度为 O(log2n) 。

解 :输出语句是原操 作语句,设第i次循环时,循 环变量的值为ni 设输出语句共执行了T次。 第1次循环结束时 1 n(1/2) n/2 = n1=
典型的错误 (错误Байду номын сангаас)
(2)void binary(int n) { while(n) { cout<<n; n=n/2; } }
相关文档
最新文档