数据结构 陈明 习题答案

合集下载

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

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

数据结构第一章课后习题与答案资料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.数据结构是一门研究非数值计算的程序设计问题中的操作对象以及它们之间的()和运算的学科。

A.结构B.关系 C.运算 D.算法2.在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.逻辑结构和存储结构3.线性表的逻辑顺序和存储顺序总是一致的,这种说法()。

A.正确B.不正确 C.无法确定 D.以上答案都不对4.算法分析的目的是()。

A.找出算法的合理性 B.研究算法的输人与输出关系C.分析算法的有效性以求改进 D.分析算法的易懂性5. 算法的时间复杂度取决于()A.问题的规模B待处理数据的初态 C. A和B6.一个算法应该是()。

A.程序B.问题求解步骤的描述C.要满足五个基本特性 D.A和C.7. 下面关于算法说法错误的是()A.算法最终必须由计算机程序实现B.为解决某问题的算法与为该问题编写的程序含义是相同的C. 算法的可行性是指指令不能有二义性D. 以上几个都是错误的8.以下与数据的存储结构无关的术语是()。

A.循环队列 B. 链表 C. 哈希表 D. 栈9.在下面的程序段中,对x的赋值语句的频度为()for(i=0;i<n;i++)for(j=0;j<n;j++)x=x+1;nA. 2n B.n C.n2 D.log210.以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队列 D.栈11. 下列数据中,()是线性数据结构。

A.哈夫曼树 B.有向无环图 C. 二叉排序树 D. 栈12.以下属于逻辑结构的是()。

A.顺序表 B. 哈希表 C.有序表 D. 单链表二、填空题1、_______是信息的载体,是对客观事物的符号表示,它能够被计算机识别、存储、加工和处理,________是对能够有效的输人到计算机中并且能够被计算机处理的符号的总称。

(数据、数据)2、数据元素是数据的______,有些情况下也称为元素、结点、顶点、记录等。

数据结构各章习题及答案

数据结构各章习题及答案

数据结构各章习题及答案第一章绪论一、选择题1.组成数据的基本单位是()(A)数据项(B)数据类型(C)数据元素(D)数据变量2.数据结构是研究数据的()以及它们之间的相互关系。

(A)理想结构,物理结构(B)理想结构,抽象结构(C)物理结构,逻辑结构(D)抽象结构,逻辑结构3.在数据结构中,从逻辑上可以把数据结构分成()(A)动态结构和静态结构(B)紧凑结构和非紧凑结构(C)线性结构和非线性结构(D)内部结构和外部结构4.数据结构是一门研究非数值计算的程序设计问题中计算机的(①)以及它们之间的(②)和运算等的学科。

①(A)数据元素(B)计算方法(C)逻辑存储(D)数据映像②(A)结构(B)关系(C)运算(D)算法5.算法分析的目的是()。

(A)找出数据结构的合理性(B)研究算法中的输入和输出的关系(C)分析算法的效率以求改进(D)分析算法的易懂性和文档性6.计算机算法指的是(①),它必须具备输入、输出和(②)等5个特性。

① (A)计算方法(B)排序方法(C)解决问题的有限运算序列(D)调度方法②(A)可执行性、可移植性和可扩充性(B)可行性、确定性和有穷性(C)确定性、有穷性和稳定性(D)易读性、稳定性和安全性二、判断题1.数据的机内表示称为数据的存储结构。

()2.算法就是程序。

()3.数据元素是数据的最小单位。

()4.算法的五个特性为:有穷性、输入、输出、完成性和确定性。

()5.算法的时间复杂度取决于问题的规模和待处理数据的初态。

()三、填空题1.数据逻辑结构包括________、________、_________ 和_________四种类型,其中树形结构和图形结构合称为_____。

2.在线性结构中,第一个结点____前驱结点,其余每个结点有且只有______个前驱结点;最后一个结点______后续结点,其余每个结点有且只有_______个后续结点。

3.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。

数据结构第1章习题参考答案

数据结构第1章习题参考答案

1.6 习题1.6.1知识点:数据结构的定义一、选择题1①数据结构通常是研究数据的( A )及它们之间的相互联系。

A.存储和逻辑结构B.存储结构C.顺序结构D.链式存储结构2①数据在计算机存储器内表示时,物理地址与逻辑地址相同并且是连续的,称之为( C )A.存储结构B.逻辑结构C.顺序存储结构D.链式存储结构3①线性结构是数据元素之间存在一种(D )。

A.一对多关系 B. 多对多关系 C 多对一关系D 一对一关系4①计算机内部数据处理的基本单位是( B )。

A. 数据B.数据元素 C.数据项D.数据库5②从逻辑上可以把数据结构分为(C )两大类。

【武汉交通科技大学1996】A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构二、填空题1①数据结构按逻辑结构可分为四大类,它们分别是集合、线性、树、图。

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

三、判断题(F)1①数据元素是数据的最小单位。

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

( F )3①数据的逻辑结构是指数据的各数据项之间的逻辑关系。

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

四、简答题1①简述什么是数据结构?2②数据结构与数据类型有什么区别? 【哈尔滨工业大学2001】1.6.2知识点:算法的概念一、选择题1①计算机算法指的是(C )A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法2①算法分析的目的是((1)C ),算法分析的两个主要方面((2)A ).(1) A .找出数据结构的合理性 B .研究算法中的输入与输出的关系C .分析算法的效率以求改进D .分析算法的易查性和文档性(2) A .空间复杂度和时间复杂度 B .正确性和简明性C .可读性和文档性D .数据复杂性和程序复杂性3② 设语句X++的时间是单位时间,则语句:for (i=1;i<=n;i++)x++;时间复杂度为( C )。

(完整版)数据结构练习题及参考答案

(完整版)数据结构练习题及参考答案

数据结构练习题第一部分绪论一、单选题1. 一个数组元素a[i]与________的表示等价。

A、 *(a+i)B、 a+iC、 *a+iD、 &a+i2. 对于两个函数,若函数名相同,但只是____________不同则不是重载函数。

A、参数类型B、参数个数C、函数类型3. 若需要利用形参直接访问实参,则应把形参变量说明为________参数A、指针B、引用C、值4. 下面程序段的时间复杂度为____________。

for(int i=0; i<m; i++)for(int j=0; j<n; j++)a[i][j]=i*j;A、 O(m2)B、 O(n2)C、 O(m*n)D、 O(m+n)5. 执行下面程序段时,执行S语句的次数为____________。

for(int i=1; i<=n; i++)for(int j=1; j<=i; j++)S;A、 n2B、 n2/2C、 n(n+1)D、 n(n+1)/26. 下面算法的时间复杂度为____________。

int f( unsigned int n ) {if ( n==0 || n==1 ) return 1; else return n*f(n-1);}A、 O(1)B、 O(n)C、 O(n2)D、 O(n!)二、填空题1. 数据的逻辑结构被分为__________、_________、__________和__________四种。

2. 数据的存储结构被分为__________、_________、__________和__________四种。

3. 在线性结构、树形结构和图形结构中,前驱和后继结点之间分别存在着________、________和________的联系。

4. 一种抽象数据类型包括__________和__________两个部分。

5. 当一个形参类型的长度较大时,应最好说明为_________,以节省参数值的传输时间和存储参数的空间。

数据结构习题参考答案

数据结构习题参考答案

数据结构习题参考答案第一章答案一、填空题1.数据元素,数据项2. O(1),O(n),O(log 2n),O(n 2)3.线性结构,非线性结构,顺序结构,链式结构4.无,一,无,一5.前驱,一,无,任意6.任意7. O(n 1/2)8.O(1)<o(2n<="") 第二章答案一、填空题1. n/2,(n-1)/2分析:当在顺序线性表中的第i (1<=i<=n+1)个位置之前插入一个新元素时,从第i 个元素起向后的n+1-i 个元素均要向后移动一个位置。

因此在等概率情况下,插入操作中元素的平均移动次数为∑+==-++=112)1(11)(n i ni n n n f ;当在顺序线性表中删除第i (1<=i<=n )个位置上的元素,从第i+1个元素起向后的n-i 个元素均要向前移动一个位置。

因此在等概率情况下,删除操作中元素的平均移动次数为∑=-=-= n i n i n n n f 121)(1)(。

2.向后3.向前4.指针域5.一定,不一定6. O(n)7. O(n)8.消除空表的特殊性,统一表示和处理空表和非空表的情形,从而简化插入和删除等操作的某些细节。

9.前驱,后继10.O(n)二、填空题1. (1)2. (1)3. (4)4. (2)5. (2)6. (4)7. (4)8. (1)9. (4)10.(1)11.(2)12.(3)第三章参考答案一、填空题1.线性,任何,栈顶,队尾,队头2.先进后出(FILO ),队尾,队头,先进先出(FIFO )3. top==0,top==m4. 235415.前一个位置,所在位置,m-1分析:在顺序循环队列中约定头指针front 和尾指针rear 所指向的位置,是牺牲掉一个存储单元而方便表示队列空和队列满的条件,因此顺序循环队列中实际可用的存储单元只有m-1个。

6. (rear+1)%m==front ,rear==front7. O(1)8.返回地址,返回地址二、选择题1.(3) 2.(3) 3.(3) 4. (2)5. (2)6. (3)7. (1)8. (4)因为:顺序循环队列中的元素个数=??<+-≥-front rear m front rear front rear front rear ,整理合并可写成(rear-front+m)%m 。

数据结构习题解答

数据结构习题解答

数据结构习题解答(共7页) -本页仅作为预览文档封面,使用时请删除本页-习题一1 填空题(1) (数据元素、或元素、或结点、或顶点、或记录)是数据的基本单位,在计算机程序中作为一个整体进行考虑和处理。

(2)(数据项、或字段)是数据的最小单位,(数据元素)是讨论数据结构时涉及的最小数据单位。

(3)从逻辑关系上讲,数据结构主要分为(集合)、(线性结构)、(树结构)和(图)。

(4)数据的存储结构主要有(顺序存储结构)和(链式存储结构)两种基本方法,不论哪种存储结构,都要存储两方面的内容:(数据元素)和(它们之间的关系)。

(5) 算法具有5个特性,分别是(输入)、(输出)、(有穷性)、(确定性)、(可行性)。

(6) 算法的描述方法通常有(自然语言)、(流程图)、(程序设计语言)、(伪代码)4种,其中,(伪代码)被称为算法语言。

(7) 一般情况下,一个算法的时间复杂度是算法(输入规模)的函数。

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

2. 选择题: (1) C, D (2) B (3) B (4) A (5) D (6) A (7) C (8) C, E习题二1. 填空题(1) 在顺序表中,等概率情况下,插入和删除一个元素平均需移动(表长的一半)个元素,具体移动元素的个数与(表的长度)和(数据元素所在的位置)有关。

(2) 一个顺序表的第一个元素的存储地址是100,每个数据元素的长度是2,则第5个数据元素的存储地址是(108)。

(3) 设单链表中指针p指向单链表的一个非空结点A,若要删除结点A的直接后继,则需要修改指针的操作为(p->next=(p->next)->next, 或者 q=p->next; p->next=q->next)。

(4) 单链表中设置头结点的作用是(方便运算,减少程序的复杂性,使得空表和非空表处理统一)。

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

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

数据结构课程课后习题答案(总40页)--本页仅作为文档封面,使用时请直接删除即可----内页可以根据需求调整合适字体及大小--《数据结构简明教程》练习题及参考答案练习题11. 单项选择题(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.易读性、稳定性和安全性答:B2. 填空题(1)数据结构包括数据的①、数据的②和数据的③这三个方面的内容。

答:①逻辑结构②存储结构③运算(2)数据结构按逻辑结构可分为两大类,它们分别是①和②。

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

答:①数据元素 ②关系(4)在线性结构中,第一个结点 ① 前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点 ② 后继结点,其余每个结点有且只有1个后继结点。

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

答:①前驱 ②1 ③后继 ④任意多个(6)在图形结构中,每个结点的前驱结点数和后继结点数可以是( )。

23490数据结构习题标准答案

23490数据结构习题标准答案

第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。

A.存储结构 B.存储实现C.逻辑结构 D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。

A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。

A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。

A.顺序队列 B. 链表C.有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队 D.栈6.试分析下面各程序段的时间复杂度。

(1)x=90。

y=100。

while(y>0)if(x>100){x=x-10。

y--。

}else x++。

(2)for (i=0。

i<n。

i++)for (j=0。

j<m。

j++)a[i][j]=0。

(3)s=0。

for i=0。

i<n。

i++)for(j=0。

j<n。

j++)s+=B[i][j]。

sum=s。

(4)i=1。

while(i<=n)i=i*3。

(5)x=0。

for(i=1。

i<n。

i++)for (j=1。

数据结构课后习题答案-完整版

数据结构课后习题答案-完整版

数据结构课后习题答案-完整版下面是《数据结构课后习题答案-完整版》的内容:---第一章:数组1. 题目:给定一个整数数组,判断是否存在两个元素之和等于目标值。

答案:使用双指针法,首先将数组排序,然后设置左指针指向数组头部,右指针指向数组尾部。

如果左指针和右指针指向的元素之和小于目标值,则左指针右移;如果大于目标值,则右指针左移;如果等于目标值,则找到了两个元素之和等于目标值的情况。

2. 题目:给定一个整数数组和一个目标值,找出数组中和为目标值的两个数的下标。

答案:使用哈希表,在遍历数组的过程中,将每个元素的值和下标存储在哈希表中。

遍历到当前元素时,检查目标值与当前元素的差值是否在哈希表中,如果存在,则找到了两个数的下标。

---第二章:链表1. 题目:给定一个链表,判断链表中是否存在环。

答案:使用快慢指针法,定义两个指针,一个指针每次向前移动一个节点,另一个指针每次向前移动两个节点。

如果存在环,则两个指针必定会相遇。

2. 题目:给定一个链表,删除链表的倒数第N个节点。

答案:使用双指针法,定义两个指针,一个指针先移动N个节点,然后两个指针同时向前移动,直到第一个指针到达链表尾部。

此时第二个指针指向的节点即为要删除的节点。

---第三章:栈和队列1. 题目:设计一个栈,使得可以在常数时间内获取栈中的最小元素。

答案:使用辅助栈来保存当前栈中的最小元素。

每次压栈操作时,将当前元素与辅助栈的栈顶元素比较,只有当前元素较小才将其压入辅助栈。

2. 题目:设计一个队列,使得可以在常数时间内获取队列中的最大元素。

答案:使用双端队列来保存当前队列中的最大值。

每次入队操作时,将当前元素与双端队列的末尾元素比较,只有当前元素较大才将其压入双端队列。

---第四章:树和二叉树1. 题目:给定一个二叉树,判断它是否是平衡二叉树。

答案:通过递归遍历二叉树的每个节点,计算每个节点的左子树高度和右子树高度的差值。

如果任意节点的差值大于1,则该二叉树不是平衡二叉树。

23490数据结构习题答案解析

23490数据结构习题答案解析

第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构 B.紧凑结构和非紧凑结构C.线性结构和非线性结构 D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。

A.存储结构 B.存储实现C.逻辑结构 D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。

A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。

A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。

A.顺序队列 B. 链表 C.有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树 B.字符串 C.队 D.栈6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。

数据结构习题答案.

数据结构习题答案.

第1章绪论习题1.简述下列概念:数据、数据元素、数据项、数据对象、数据结构、逻辑结构、存储结构、抽象数据类型。

2.试举一个数据结构的例子,叙述其逻辑结构和存储结构两方面的含义和相互关系。

3.简述逻辑结构的四种基本关系并画出它们的关系图。

4.存储结构由哪两种基本的存储方法实现?5.选择题(1)在数据结构中,从逻辑上可以把数据结构分成()。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.线性结构和非线性结构D.内部结构和外部结构(2)与数据元素本身的形式、内容、相对位置、个数无关的是数据的()。

A.存储结构B.存储实现C.逻辑结构D.运算实现(3)通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着()。

A.数据具有同一特点B.不仅数据元素所包含的数据项的个数要相同,而且对应数据项的类型要一致C.每个数据元素都一样D.数据元素所包含的数据项的个数要相等(4)以下说法正确的是()。

A.数据元素是数据的最小单位B.数据项是数据的基本单位C.数据结构是带有结构的各数据项的集合D.一些表面上很不相同的数据可以有相同的逻辑结构(5)以下与数据的存储结构无关的术语是()。

A.顺序队列 B. 链表 C.有序表 D. 链栈(6)以下数据结构中,()是非线性数据结构A.树B.字符串C.队D.栈6.试分析下面各程序段的时间复杂度。

(1)x=90; y=100;while(y>0)if(x>100){x=x-10;y--;}else x++;(2)for (i=0; i<n; i++)for (j=0; j<m; j++)a[i][j]=0;(3)s=0;for i=0; i<n; i++)for(j=0; j<n; j++)s+=B[i][j];sum=s;(4)i=1;while(i<=n)i=i*3;(5)x=0;for(i=1; i<n; i++)for (j=1; j<=n-i; j++)x++;(6)x=n; //n>1y=0;while(x≥(y+1)* (y+1))y++;(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题(1)一个向量第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是()。

数据结构课后习题参考答案完整版资料

数据结构课后习题参考答案完整版资料

5. 选择题:CCBDCA6. 试分析下面各程序段的时间复杂度。

(1) O( 1)(2) O( m*n)(3) O( n2)(4) O (log 3n)(5) ......................................................... 因为x++共执行了n-1+ n-2+ +仁n(n-1)/2,所以执行时间为O ( n2)(6) 0( .. n )第2章线性表1•选择题babadbcabdcddac2•算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

ElemType Max (Li nkList L ){if(L->n ext==NULL) return NULL;pmax=L->n ext;法设计题(2)回文是指正读反读均相同的字符序列,如" abba"和"abdba”均是回文,但"good”不是回文。

试写一个算法判定给定的字符向量是否为回文。

(提示:将一半字符入栈)?根据提示,算法可设计为:合应用题(1)已知模式串t= ‘ abcaabbabcab '写出用KMP法求得的每个字符对应的next和nextval函数值。

(3)数组A中,每个元素A[i,j]的长度均为32个二进位,行下标从-1到9,列下标从1到11,从首地址S 开始连续存放主存储器中,主存储器字长为16位。

求:①存放该数组所需多少单元?②存放数组第4列所有元素至少需多少单元?③数组按行存放时,元素A[7,4]的起始地址是多少?④数组按列存放时,元素A[4,7]的起始地址是多少?每个元素32个二进制位,主存字长16位,故每个元素占2个字长,行下标可平移至1到11。

(1) 242 (2) 22 (3) s+182 (4) s+142⑷请将香蕉banana用工具H( ) —Head( ),T( ) —Tail() 从L中取出。

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

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

习题一答案1.填空题(1)数据元素的有限集合,k上关系的有限集合(2)顺序存储(连续),链式存储(不连续)(3)有穷性,确定性,可行性,输入,输出(4)时间复杂度,空间复杂度3.简述下列术语(1)数据——是信息的载体,它是描述客观事物的数、字符以及所有能输入到计算机中被计算机程序识别、加工处理的信息的集合。

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

一个数据元素可以由一个或若干个数据项组成。

数据元素也被称为结点或记录。

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

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

(5)存储结构——数据的存储结构是数据的逻辑结构在计算机内部的表示或实现,又称为数据的物理结构,它包括数据元素的表示和关系的表示。

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

5.常用的存储表示方法有哪几种?(1)顺序存储方法——该方法是将逻辑上相邻的结点存储在物理位置上也相邻的存储单元里,结点之间的逻辑关系由存储单元的邻接关系来表示(也就是说,只存储结点的值,不存储结点之间的关系),这种存储表示称为顺序存储结构。

(2)链式存储方法——链式存储方法不要求逻辑上相邻的结点在物理位置上亦相邻,结点间的关系由附加的指针来表示,指针指向结点的邻接结点,这样将所有结点串联在一起,称为链式存储结构。

(3)索引存储方法——索引存储是在存储结点信息的同时,再建立一个附加的索引表,然后利用索引表中索引项的值来确定结点的实际存储单元地址。

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

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

通过公式:程序=数据结构+算法我们可以比较直观地看出二者的关系,即数据结构(包个完整的程序括逻辑结构和存储结构)的设计和算法的编写是程序设计的两个关键步骤,一就是由一套合理的数据结构和建立在该结构上的算法构成的。

数据结构课本习题答案

数据结构课本习题答案

数据结构第一章绪论一、单项选择题1、(1)A(2)B2、(1)B(2)D3、C4、A5、A6、(1)C(2)A7、(1)C(2)A8、C9、C 10、B 11、D二、填空题1、存储结构、算法2、非线性结构3、线性、树型、图形4、映射5、线性结构、树型结构、图形结构6、有穷性、确定性、可行性7、错误三、算法分析1、(1)O(n)、(2)O(n) 、(3)O(n)、(4)O(n)、(5)O(n)、(6)O(log3n)、(7) O(log2n)2、(1) order()函数是一个递归排序过程,设T(n)是排序n个元素所需要的时间。

在排序n个元素时,算法的计算时间主要花费在递归调用order()上。

第一调用时,处理的元素序列个数为n-1,也就是对余下的n-1个元素进行排序,所需要的计算时间应为T(n-1)。

又因为在其中的循环中,需要n-1次比较。

所以排序n个元素所需要的时间为:T(n)=T(n-1)+n-1 n﹥1据此可得:T(1)=0T(2)=T(1)+1=0+1=1T(n)=T(n-1)+n-1 n﹥1求解过程为:T(n)=[T(n-2)+(n-2)]+n-1=[T(n-3)+(n-3)]+(n-2)+n-1=…=(T(1)+1)+2+…+ n-1=0+1+2+…+ n-1=n(n-1)/2=O(n2)故order函数的时间复杂度为O(n2)(2)解:设fact(n)数是T(n)。

该函数中语句If (n≤1),return1;的运行时间是O(1),语句return(n*fact(n-1)); 运行时间是T(n-1)+O(1),其中O(1)为乘法运算的时间。

因此T(n)=O(1)n≤1T(n)= T(n-1)+O(1) n>1则T(n)=O(1)+T(n-1)=2*O(1)+T(n-2)=…=(n-1)*O(1)+T(1)=n*O(1)=O(n)即fact(n)的时间复杂度为O(n)。

(3)解:设Fn的时间复杂度为T(n),有:T(n)=T(n-1)+T(n-2)<2T(n-1)<22T(n-2)<…<2n T(0)=O(2n)又:T(n)=T(n-1)+T(n-2)>2T(n-2)>22T(n-4)>…>22n T(1) (n为奇数时,或22n T(0),n为偶数时)即:T(n)>O(22n)则:O(22n)<T(n) <O(2n)取最坏情况上限,即T(n) = O(2n)。

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

习题二答案
1.如定理 2.1 所描述的,从盒子中往外取球,在 a-d 所给的答案中,哪一个是 i,j,k 对应的值。 第 2 页 共 40 页
数据结构_陈明_习题答案 a. Red,5,6 b. Blue,5,6 c. Blue,3,Red d. 6,5,Red (a) 2.假设 T1(N)= O(F(N) ) ,T2(N)= O(F(N) ) ,下列哪一个正确?a a. T1 (N)+ T2 (N) = O(F(N)) b. T1 (N)- T2 (N) = O(F(N)) c. T1 (N)/ T2 (N) = O(1) d. T1 (N) = O(T2 (N)) (a) 3.基于定理 2.2 的描述,为什么不能充分获得一个最大连续子序列之和的次平方运行时间? 见定理 2 4.将下列各式组合成与 Big-Oh 相等的函数。 2 2 2 3 x ,x + x,x - x,x /( x – 1 ) 2 O(x ) 2 5.程序 A 和程序 B 经分析,有不超过 150NlogN 和 N 的最坏情况下的运行时间,如可能,分别回答下列各问 题: a. 当 N 值很大时(N > 10,000),哪个程序对运行时间有保证? A b. N 值较小(N < 1000)时,哪一个程序对运行时间有更好的保证? B c. 在 N = 1,000 的平均情况下,哪个程序运行更好? A d. 在所有可能的输入中,程序 B 总比程序 A 运行的快吗? 当然不是。当 N 很大是程序 B 就没有程序 A 效果好 6.对于这些你用手工来计算的典型算法,确定其运行时间。 a. 两个 N 位整数相加 O(1) b. 两个 N 位整数相乘 O(n**2) c. 两个 N 位整数相除 0 (n**2) N 7.对于 N 个项来说,以下计算 X 的算法运行时间是多少? double power(double x,int n) { double result = 1.0; for(int i = 0; i < n; i++) result *= x; return result; } 8.对于求最大子序列之和问题的平方算法而言,精确的确定语句最内部循环被执行多少次? 参考答案: (1+N)*N/2 9.一个算法在输入规模为 100 时,花费 0.5ms 的时间,在下列情况下,输入规模为 500 时,它将花费多少 时间?(低次项不考虑) (单位全是 MS) a. 线性算法 (500/100)*0.5=2.5 b. O(NlogN) (500*log500)/(100*LOG100)*0.5=2.5*LOG5=5.0 c. 平方算法 500*500/(100*100)*0.5=12.5 d. 立方算法 500*500*500/(100*100*100)*0.5=62.5 10.一个算法在输入规模为 100 时,花费 0.5ms 的时间,在下列情况下,一分钟可以解决一个多大的问题? (低次项不考虑) a. 线性算法 1*60*1000=(N/100)*0.5 N=6000000/0.5=12000000 b. O(NlogN) 1*60*1000=(N*LOGN)/(100*LOG100)*0.5 N*logN=24000000 N= 第 3 页 共 40 页
数据结构_陈明_习题答案 通过上面这个例子我们简单的阐述了数据结构与算法的关系,更深入的内涵还要读者在以后的学习中 自己慢慢地体会。 9 . 设 有 数 据 逻 辑 结 构 为 B= ( K , R ) , K={k1 , k2 , …… , k9} r={<k1,k3>,<k3,k8>,<k2,k3>,<k2,k4>,<k2,k5>,<k3,k9>,<k5,k6>,<k8,k9>,<k9,k7 >, <k4,k7>,<k4,k6>} 画出这个逻辑结构的图示,并确定相对于 r 哪些结点是开始结点,哪些结点是终端 结点? 通过以后的学习我们会知道这是一个有向图,图中共有 9 个结点,其中开始结点有 2 个,分别为 K1 和 K2;终端结点有 2 个,分别为 K6 和 K7。 逻辑结构图表示如下:
k1
k2
k4
k3
k5
k6
k8
k9
k7
11.何谓算法?试详述算法设计的目的和算法必须满足的条件。 算法是对特定问题求解步骤的一种描述,实际上是指令的有限序列,其中每一条指令表示一个或多个 操作。我们知道,程序设计的第一步是为待处理的数据设计一种合理的数据结构(包括逻辑结构和物理结 构) ,这一步固然重要,但这不是我们的目的,设计数据结构的最终目的是为了在这个基础上编写算法进而 对其进行相关的操作(例如:遍历,查找,排序,插入,删除等) ,如果不去编写相应的算法那么设计数据 结构也就失去了它的意义,你所输入到计算机的数据永远都是“死数据”, 程序设计也就成了空谈!一句话: 设计数据结构的目的是为了对它们进行处理,而数据处理正是通过相应的算法实现的! 总的来说,一个算法应具有以下 5 个重要特性:第一,有穷性:一个算法必须总是(对任何合法的输 入值)在执行有穷步之后结束,且每一步都可在有穷时间内完成;第二,确定性:算法中每条指令必须有 确切的含义,读者理解时不会产生二意性。并且,在任何条件下,算法只有唯一的一条执行路径,即对相 同的输入只能得到相同的输出;第三,可行性:一个算法是能行的,即算法中描述的操作都是通过已经实 现的基本运算执行有限次来实现的;第四,输入:一个算法有零个或多个的输入,这些输入取自于某个特 定的对象的集合;第五,输出:一个算法有一个或多个的输出。这些输出是同输入有着某些特定关系的量。 13.编写一个算法,对三个两位数按由大到小的顺序进行排序,描述构造该算法的思维程。 算法如下: void order(short a, short b, short c) { short t; if (a<b){t=a; a=b; b=t;} if (a<c){t=a; a=c; c=t;} if (b<c){t=b; b=c; c=t;} printf(“%d %d %d\n”, a, b, c); } 算法对主函数传递过来的三个短整形变量(由于输入三个两位整数,所以定义短整形就足够了)两两 进行比较,如果前面的数小于后面的数的话则进行交换,交换的中间变量用 t 来存放,交换的最后结果是 三个变量由大到小排列,最后将结果打印输出。
数据结构_陈明_习题答案 c. 平方算法 1*60*1000=N*N/10000*0.5 N*N=1200000000 N=40000 d. 立方算法 1*60*1000=N*N*N/1000000*0.5 N*N*N=120000000000 N=5000 11.在一个案例中,有一个法官因鄙视而传唤一个城市中的市民并规定第一天的罚金为 2 美元,随后的每一 天递增,直到这个城市的市民听从法官的命令,罚金为平方次(按以下序列增长:$2,$4,$16,$256, $65536;……) 。 a. 在第 N 天罚金为多少? 2*2**N b. 多少天罚金达到 D 美元(给 出一个 Big-Oh 结果)? D=2*2**N D=2**(N+1) N=LOG2(D)-1 O(LOG(D) ) 12.证明定理 2.5。提示:给出 O(LOGN) 13.一个质数除了 1 和它本身外没有其它因子,完成以下工作: a. 写一个程序检验一个整数 N 是否为质数,当有 N 项时,你的程序在最坏情况下的运行时 间为多少? O(SQRT(N) ) b. 使 B 等于 N 在二进制数的位数,B 的值为多少? N=2**B-1 B=LOG2(N+1) c. 在 B 项中,你的程序在最坏情况下的运行时间是多少? O(SQRT(LOGN) ) d. 通过比运行时间来确认一个 20 位和一个 40 位的数是否为质数。 如果运行时间长 20 位比 40 位还长则 20 位是质数 14.Eratosthenes 过滤法被用来计算所有小于 N 的质数, 以一个从 2 到 N 的整数表开始, 找出最小的整数 i, 打印 i,并去掉 i,2i,3i……,当 i>N 时,算法终止,运行时间为 O(NloglogN) ,写出一个程序来执行 Eratosthenes 过滤法,并证实所声明的运行时间,区别 O(N)和 O(NlogN)的运行时间有多困难? 程序略 5 5 5 5 5 5 15.等式 A + B + C + D + E = F ,有一个满足 0 <= A <= B <= C <= D <= E <= F <= 75 的确切的整数解, 5 编写一个程序找出这个解。提示:预先算出 X 的所有值,并将它们存到数不清组中,对每个元组(A,B,C, D,E) ,你仅仅需要证实有哪些 F 存在于数组中(这里有几种方法对 F 进行检查,一个是二分搜索法,其他 的方法被证实更有效) 。 略 并得出一个相似的下限。
数据结构_陈明_习题答案
习题一案
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 只要用 float A[n][n]; 这条语句就可以了,C 语言在内存种为之分配了一个 n*n 长度的顺序存储空间(注意:C 语言默认二维数组是按行优先存储的) ,是不是很方便?有了这些准备,我 们就可以设计算法进行计算了,其算法如下: void matrixmult ( float A[n][n], float B[n][n], float C[n][n] ) { int i , j , k ; float x ; for ( i=0; i<n; i++ ) { for ( j=0; j<n; j++ ) { x=0; for ( k=0; k<n; k++ ) { x+=A[i][k]*B[k][j]; } C[i][j]=x; } } } 第 1 页 共 40 页
相关文档
最新文档