数据结构课后习题解答第一章 绪论

合集下载

数据结构(1,2,3章)课后题答案..

数据结构(1,2,3章)课后题答案..

西北大学可视化技术研究所

1.3填空题: (1)变量的作用域是指 变量的有效范围 (2)抽象数据类型具有 数据抽象 、 信息隐 蔽 的特点。 (3)一种抽象类型包括 数据对象 、 结构 关系 和 基本操作 。
西北大学可视化技术研究所
(4)当需要用一个形式参数直接改变对应实参 的值时,该形式参数应说明为 指针类型 。 (5)数据结构的逻辑结构分为 集合结构 、 线性结构 、 树形结构 和 图结构 四种。 (6)数据结构的存储结构分为 顺序存储结构 和 链式存储结构 两种。
西北大学可视化技术研究所
(3)顺序表中,逻辑上相邻的元素,其物理位 置 也 相邻。在单链表中,逻辑上相邻的元 素,其物理位置 不一定 相邻。 (4)在带头结点的非空单链表中,头结点的存 储位置由 头指针 指示,首元素结点的存 储位置由 头结点的next域 指示,除首元素 结点外,其它任一元素结点的存储位置由 其 直接前驱的next域 指示。
8.假设两个按元素值递增有序排列的线性 表A和B,均以单链表作为存储结构,请 编写算法,将A表和B表归并成一个按元 素值递减有序排列的线性表C,并要求利 用原表(即A表和B表的)结点空间存放 表C。
西北大学可视化技术研究所

算法描述:要求利用现有的表A和B中的结 点空间来建立新表C,可通过更改结点的next 域来重新建立新的元素之间的线性关系。为保 证新表递减有序可以利用头插法建立单链表的 方法,只是新建表中的结点不用malloc,而只 需要从A和B中选择合适的点插入到新表C中即 可。
i
西北大学可视化技术研究所

第二步:计算结果
n n (1+i)i i2 i 2 i=1 i 1 2 i 1 2 n
1 2 2 1 2 (1 2 ... n ) (1 2 ... n) 2 2

《数据结构》吕云翔编著第1章绪论习题解答

《数据结构》吕云翔编著第1章绪论习题解答

《数据结构》吕云翔编著第1章绪论习题解答数据结构第一章绪论习题一、【单选题】1. (A)是数据的基本单位。

A、数据元素B、数据对象C、数据项D、数据结构2. (C)是数据的不可分割的最小单位。

A、数据元素B、数据对象C、数据项D、数据结构3. 若采用非顺序映象,则数据元素在内存中占用的存储空间(C)。

A、一定连续B、一定不连续C、可连续可不连续4. 若采用顺序映象,则数据元素在内存中占用的存储空间(A)。

A、一定连续B、一定不连续C、可连续可不连续5. 在数据结构中,从逻辑上可以把数据结构分为(C)A、动态结构和静态结构B、紧凑结构和非紧凑结构C、线性结构和非线性结构D、内部结构和外部结构6. 在树形结构中,数据元素间存在(B)的关系。

A、一对一B、一对多C、多对多D、除同属一个集合外别无关系7. 下列说法中错误的是(B)。

A、数据对象是数据的子集B、数据元素间关系在计算机中的映象即为数据的存储结构C、非顺序映象的特点是借助指示元素存储地址的指针来表示数据元素间逻辑关系D、抽象数据类型指一个数学模型及定义在该模型上的一组操作8. 计算机算法指的是(C)。

A、计算方法B、排序方法C、解决问题的有限运算序列D、调度方法9. 下列不属算法特性的是(D)。

A、有穷性B、确定性C、零或多个输入D、健壮性10.算法分析的目的是(C)。

A、找出数据结构的合理性B、研究算法中的输入和输出的关系C、分析算法的效率以求改进D、分析算法的易读性和文档性11.算法分析的两个主要方面是(A)。

A、空间复杂性和时间复杂性B、正确性和简明性C、可读性和文档性D、数据复杂性和程序复杂性12.算法的计算量的大小称为算法的(A)。

A、效率B、复杂性C、现实性D、难度13.在下面的程序段中,对x的赋值语句的频度为(C)。

for(i=1;i<=n;++i)for(j=1;j<=n;++j)x=x+1;A、2nB、nC、n2D、log2n14.设n为正整数,则如下程序段中最后一行的语句频度在最坏情况下是(D)。

《数据结构》(C语言版) 第一章 绪论 习题及答案

《数据结构》(C语言版) 第一章 绪论 习题及答案

一、单选题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、内部结构和外部结构7、数据的逻辑结构是指 ______ 关系的整体。

A、数据项之间逻辑B、数据元素之间逻辑C、数据类型之间D、存储结构之间8、以下是数据结构中 ______ 属非线性结构。

A、串B、栈C、队列D、平衡二叉树9、以下属于逻辑结构是 ______。

A、双链表B、单链表C、顺序表D、有序表10、以下不属于存储结构是______。

A、顺序表B、线性表C、邻接表D、单链表11、在计算机中存储数据时,通常不仅要存储各数据元素的值,而且还有存储 ______。

A、数据元素之间的关系B、数据元素的类型C、数据的处理方法D、数据的存储方法12、数据结构在计算机内存中的表示是指 ______。

A、数据的逻辑结构B、数据结构C、数据元素之间的关系D、数据的存储结构13、在数据的存储中,一个节点通常存储一个 ______。

A、数据结构B、数据元素C、数据项D、数据类型14、在决定选取任何类型的存储结构时,一般不多考虑 ______。

A、各节点的值如何B、节点个数的多少C、对数据有哪些运算D、所用编程语言实现这种结构是否方便15、数据在计算机的存储器中表示时,逻辑上相邻的两个元素对应的物理地址也是相邻的,这种存储结构称之为 ______。

《数据结构》吕云翔编著第1章绪论习题解答

《数据结构》吕云翔编著第1章绪论习题解答

《数据结构》吕云翔编著第1章绪论习题解答数据结构是计算机科学中的一个重要概念,它涉及到存储、组织和管理数据的方法和技术。

《数据结构》是吕云翔编著的一本经典教材,本文将就第1章绪论中的习题进行解答。

1. 为什么要学习数据结构?数据结构是计算机科学的基础,它为我们提供了存储和操作数据的方式。

学习数据结构能够帮助我们更好地理解和分析问题,设计高效的算法,并且能够为我们解决实际问题提供支持。

2. 什么是数据结构?数据结构指的是数据元素之间的关系,以及存储和访问这些数据的方法。

常见的数据结构包括数组、链表、栈、队列、树、图等。

每种数据结构都有各自的特点和适用场景。

3. 数据结构有哪些基本操作?数据结构的基本操作包括插入、删除和查找。

插入操作将一个新的元素插入到数据结构中,删除操作将一个元素从数据结构中移除,查找操作用于寻找特定元素的位置或者判断某个元素是否存在。

4. 什么是线性结构?线性结构是数据元素之间呈线性关系的数据结构。

常见的线性结构有数组和链表。

数组是一种连续存储数据元素的结构,链表是一种通过指针将数据元素链接起来的结构。

5. 什么是非线性结构?非线性结构是数据元素之间呈非线性关系的数据结构。

常见的非线性结构有树和图。

树是一种层次结构,图是由节点和边组成的结构,节点之间的关系可以是任意的。

6. 什么是抽象数据类型?抽象数据类型(ADT)是一种数学模型,它定义了一种数据类型的抽象行为和操作。

ADT将数据的逻辑结构和数据的物理存储分离,使得数据结构和数据操作可以独立地进行设计和实现。

7. 数据结构的选择原则是什么?选择适当的数据结构是解决问题的关键。

选择数据结构应该考虑到数据的特点、操作的效率和实际应用需求。

在选择数据结构时,需要综合考虑空间复杂度和时间复杂度的因素,并且合理权衡它们之间的关系。

8. 数据结构与算法之间有什么关系?数据结构和算法是紧密相关的。

数据结构提供了算法操作的底层基础,而算法则是对数据结构进行操作的具体步骤和方法。

【课后习题及答案】严蔚敏-数据结构课后习题及答案解析

【课后习题及答案】严蔚敏-数据结构课后习题及答案解析

6.算 法 的 五 个 重 要 特 性 是 _______、_______、______、_______、_______。 7.数据结构的三要素是指______、_______和________。 8.链式存储结构与顺序存储结构相比较,主要优点是 ________________________________。 9.设有一批数据元素,为了最快的存储某元素,数据结构宜用_________ 结构,为了方便插入一个元素,数据结构宜用____________结构。
四、算法分析题
for(i=1; i<=n; i++) for(j =1; j <=i ; j++) x=x+1; 分 析 :该 算 法 为 一 个 二 重 循 环 ,执 行 次 数 为 内 、外 循 环 次 数 相 乘 ,但 内 循环次数不固定,与外循环有关,因些,时间频度 T(n)=1+2+3+…+n=n*(n+1)/2 有 1/4≤T(n)/n2≤1,故它的时间复杂度为O(n2), 即T(n)与 n2 数 量级相同。 2、分析下列算法段的时间频度及时间复杂度 for (i=1;i<=n;i++) for (j=1;j<=i;j++) for ( k=1;k<=j;k++) x=i+j-k; 分析算法规律可知时间频度 T(n)=1+(1+2)+(1+2+3)+...+(1+2+3+…+n) 由于有 1/6 ≤ T(n)/ n3 ≤1,故时间复杂度为O(n3)
精品课程
课后习题答案数据结构-严来自敏 课后习题及答案解析第一章 绪论

数据结构课后习题答案

数据结构课后习题答案

大学课程《数据结构》课后习题答案第 1 章绪论课后习题讲解1. 填空⑴()是数据的基本单位,在计算机程序中通常作为一个整体进行考虑和处理。

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

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

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

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

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

【解答】有零个或多个输入,有一个或多个输出,有穷性,确定性,可行性⑹算法的描述方法通常有()、()、()和()四种,其中,()被称为算法语言。

【解答】自然语言,程序设计语言,流程图,伪代码,伪代码⑺在一般情况下,一个算法的时间复杂度是()的函数。

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

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

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

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

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

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

数据结构耿国华课后答案

数据结构耿国华课后答案
for(i=1;i<=n;i++)
{s=s+a[i]*p; /*执行次数:n次*/
p=p*x;}
return(p);
}
算法的时间复杂度:T(n)=O(n)
第二章 线性表
2.1 描述以下三个概念的区别:头指针,头结点,首元素结点。
2.2 填空:
(1) 在顺序表中插入或删除一个元素,需要平均移动__一半__元素,具体移动的元素个数与__插入或删除的位置__有关。
Status Insert_SqList(SqList &va,int x)//把x插入递增有序表va中
{
if(va.length+1>va.listsize) return ERROR;
va.length++;
for(i=va.length-1;va.elem[i]>x&&i>=0;i--)
(7)Q= P;
(8)while(P->next!=Q) P=P->next;
(9)while(P->next!=NULL) P=P->next;
(10)P= Q;
(11)P= L;
(12)L= S;
(13)L= P;
2.4 已知线性表L递增有序。试写一算法,将X插入到L的适当位置上,以保持线性表L的有序性。
x=x*x;}
printf(“%f”,p);
}
算法的时间复杂度:T(n)=O(n)
通过参数表中的参数显式传递
float PolyValue(float a[ ], float x, int n)

数据结构课后答案

数据结构课后答案
1
B.等于
1
C.小于
1
D.不可以确立
答案:C
解说:储存密度是指一个结点数据自己所占的储存空间和整个结点所占的储存空间之比,假定单
链表一个结点自己所占的空间为D,指针域所占的空间为N,则储存密度为:D/(D+N),必定小于
(8)将两个各有n个元素的有序表合并成一个有序表,其最少的比较次数是()。
1。
A.n
n个结点的有序单链表的时间复杂度是(
B.O(n)C.O(n2)
)。
D.O(nlog2n)
答案:C
解说:单链表创立的时间复杂度是O(n),而要成立一个有序的单链表,则每生成一个新结点时需
要和已有的结点进行比较,确立适合的插入地点,所以时间复杂度是O(n2)。
(12)以下说法错误的选项是()。
A.求表长、定位这两种运算在采纳次序储存结构时实现的效率不比采纳链式储存结构时实现的
号、姓名、性别等都是数据项。
数据对象 :是性质同样的数据元素的会合,是数据的一个子集。比如:整数数据对象是会合
N={0,
±1,±2,},字母字符数据对象是会合C={‘A’,‘B’, ,‘Z’, ‘a’,‘b’, ,‘z’},学生基本信息表也但是一个数据对象。
数据结构 :是互相之间存在一种或多种特定关系的数据元素的会合。换句话说,数据结构是带“结构”的数据元素的会合, “结构”就是指数据元素之间存在的关系。
C.必定是不连续的
D.连续或不连续都能够
答案:D
(6)线性表L在()状况下合用于使用链式结构实现。
A.需常常改正L中的结点值B.需不停对L进行删除插入
C.L中含有大批的结点D.L中结点结构复杂
答案:
B
解说:链表最大的优点在于插入和删除时不需要挪动数据,直接改正指针即可。

数据结构第1章绪论习题答案

数据结构第1章绪论习题答案

Ch1绪论1.下列与数据元素有关的叙述中,哪一个是不正确的(B)。

A.数据元素是数据的基本单位,即数据集合中的个体B.数据元素是有独立含义的数据最小单位C.数据元素又称结点D.数据元素又称作记录2.下列关于数据的逻辑结构的叙述中,哪一个是正确的(A)。

A.数据的逻辑结构是数据间关系的描述B.数据的逻辑结构反映了数据在计算机中的存储方式C.数据的逻辑结构分为顺序结构和链式结构D.数据的逻辑结构分为静态结构和动态结构3.数据的基本单位是(数据元素),在计算机中通常作为一个(整体)进行处理。

4.所有能输入到计算机中并被计算机程序处理的(符号)称为数据。

5.数据结构是一门研究非数值计算的程序设计问题中计算机的(①A)以及它们之间的(②B)和运算等的学科。

① A.数据元素 B.计算方法 C.逻辑存储 D.数据映像② A.结构 B.关系 C.运算 D.算法6.数据结构被形式的定义为(K,R),其中K是(①B)的有限集,R是K上的(②D)有限集。

① A.算法 B.数据元素 C.数据操作 D.逻辑结构② A.操作 B.映像 C.存储 D.关系7.具有线性结构的数据结构是(D)。

A.树B.图C.广义表D.栈8.在数据结构中,从逻辑上可以把数据结构分为(D)。

A.动态结构和静态结构B.紧凑结构和非紧凑结构C.内部结构和外部结构D.线性结构和非线性结构9.线性结构中元素之间存在(A)关系。

A.一对一B.一对多C.多对一D.多对多10.数据逻辑结构包括(集合)、(线性结构)、(树形结构)和(图状结构)四种类型,树形结构和图形结构合称为(非线性结构)。

11.在线性结构中,第一个结点(没有)前驱结点,其余每个结点有且只有(1)个前驱结点,最后一个结点(没有)后继结点,其余每个结点有且只有(1)个后继结点。

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

数据结构答案李春葆第1章绪论

数据结构答案李春葆第1章绪论

第1章绪论教材中练习题及参考答案1. 简述数据与数据元素的关系与区别。

答:凡是能被计算机存储、加工的对象统称为数据,数据是一个集合。

数据元素是数据的基本单位,是数据的个体。

数据元素与数据之间的关系是元素与集合之间的关系。

2. 采用二元组表示的数据逻辑结构S=<D,R>,其中D={a,b,…,i},R={r},r={<a,b>,<a,c>,<c,d>,<c,f>,<f,h>,<d,e>,<f,g>,<h,i>},问关系r是什么类型的逻辑结构?哪些结点是开始结点,哪些结点是终端结点?答:该逻辑结构为树形结构,其中a结点没有前驱结点,它是开始结点,b、e、i和g、结点没有后继结点,它们都是终端结点。

3. 简述数据逻辑结构与存储结构的关系。

答:在数据结构中,逻辑结构与计算机无关,存储结构是数据元素之间的逻辑关系在计算机中的表示。

存储结构不仅将逻辑结构中所有数据元素存储到计算机内存中,而且还要在内存中存储各数据元素间的逻辑关系。

通常情况下,一种逻辑结构可以有多种存储结构,例如,线性结构可以采用顺序存储结构或链式存储结构表示。

4. 简述数据结构中运算描述和运算实现的异同。

答:运算描述是指逻辑结构施加的操作,而运算实现是指一个完成该运算功能的算法。

它们的相同点是,运算描述和运算实现都能完成对数据的“处理”或某种特定的操作。

不同点是,运算描述只是描述处理功能,不包括处理步骤和方法,而运算实现的核心则是设计处理步骤。

5. 数据结构和数据类型有什么区别?答:数据结构是相互之间存在一种或多种特定关系的数据元素的集合,一般包括三个方面的内容,即数据的逻辑结构、存储结构和数据的运算。

而数据类型是一个值的集合和定义在这个值集上的一组运算的总称,如C语言中的short int数据类型是由-32768~32767(16位机)的整数和+、-、*、/、%等运算符构成。

数据结构课后习题答案

数据结构课后习题答案

第1章绪论一、基础知识题1.1 简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。

【解答】数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。

数据元素是数据的基本单位。

在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。

数据类型是对数据的取值范围、数据元素之间的结构以及允许施加操作的一种总体描述。

每一种计算机程序设计语言都定义有自己的数据类型。

“数据结构”这一术语有两种含义,一是作为一门课程的名称;二是作为一个科学的概念。

作为科学概念,目前尚无公认定义,一般认为,讨论数据结构要包括三个方面,一是数据的逻辑结构,二是数据的存储结构,三是对数据进行的操作(运算)。

而数据类型是值的集合和操作的集合,可以看作是已实现了的数据结构,后者是前者的一种简化情况。

数据的逻辑结构反映数据元素之间的逻辑关系(即数据元素之间的关联方式或“邻接关系”),数据的存储结构是数据结构在计算机中的表示,包括数据元素的表示及其关系的表示。

数据的运算是对数据定义的一组操作,运算是定义在逻辑结构上的,和存储结构无关,而运算的实现则依赖于存储结构。

数据结构在计算机中的表示称为物理结构,又称存储结构。

是逻辑结构在存储器中的映像,包括数据元素的表示和关系的表示。

逻辑结构与计算机无关。

算法是对特定问题求解步骤的一种描述,是指令的有限序列。

其中每一条指令表示一个或多个操作。

一个算法应该具有下列特性:有穷性、确定性、可行性、输入和输出。

1.2数据的逻辑结构分哪几种,为什么说逻辑结构是数据组织的主要方面?【解答】数据的逻辑结构分为线性结构和非线性结构。

(也可以分为集合、线性结构、树形结构和图形即网状结构)。

逻辑结构是数据组织的某种“本质性”的东西:(1)逻辑结构与数据元素本身的形式、内容无关。

(2)逻辑结构与数据元素的相对位置无关。

(3)逻辑结构与所含数据元素的个数无关。

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析

严蔚敏数据结构课后习题及答案解析第一章绪论一、选择题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.在树形结构中,树根结点没有_______结点,其余每个结点有且只有_______个前驱结点;叶子结点没有________结点,其余每个结点的后续结点可以_________。

数据结构(c语言版)课后习题答案完整版

数据结构(c语言版)课后习题答案完整版

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

.试分析下面各程序段的时间复杂度。

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

)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

ElemType Max (LinkList L ){if(L->next==NULL) return NULL; pmax=L->next; //假定第一个结点中数据具有最大值假定第一个结点中数据具有最大值 p=L->next->next;while(p != NULL ){//如果下一个结点存在if(p->data > pmax->data) pmax=p; p=p->next; }return pmax->data;(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。

的存储空间。

void inverse(LinkList &L) { // 逆置带头结点的单链表 Lp=L->next; L->next=NULL; while ( p) {q=p->next; // q 指向*p 的后继 p->next=L->next;L->next=p; // *p 插入在头结点之后 p = q; }}、空间(n)、空间(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)的数据元素。

复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

数据结构(C语言)第二版慕课版王海艳课后习题答案

数据结构(C语言)第二版慕课版王海艳课后习题答案

数据结构(C语言)第二版慕课版王海艳课后习题答案第一章:绪论1.1 什么是数据结构数据结构是指相互之间存在着一种或多种特定关系的数据元素的集合,它包括数据的逻辑结构和物理结构。

1.2 数据结构的分类数据结构可以分为线性结构和非线性结构两种。

线性结构包括顺序表、链表、栈、队列等。

非线性结构包括树、图等。

1.3 抽象数据类型(Abstract Data Type,ADT)ADT是指一个数学模型及定义在该模型上的一组基本操作。

ADT包括三个要素:数据对象、数据关系和基本操作。

第二章:线性表2.1 线性表的定义和特点线性表是指n个数据元素的有限序列。

线性表的特点:数据元素之间存在一对一的线性关系。

2.2 顺序表顺序表是指用一段地址连续的存储单元依次存储数据元素的线性结构。

2.2.1 顺序表的结构顺序表的结构包括两部分:表头信息和表元素区。

表头信息包括表长和表容量两个属性。

表元素区包括具体存储的数据元素。

2.2.2 顺序表的基本操作•初始化顺序表:InitList(&L)•判断顺序表是否为空:ListEmpty(L)•获取顺序表长度:ListLength(L)•插入数据元素到顺序表:ListInsert(&L, i, e)•删除顺序表中的数据元素:ListDelete(&L, i, &e)•获取顺序表中的数据元素:GetElem(L, i, &e)•查找顺序表中元素的位置:LocateElem(L, e)•清空顺序表:ClearList(&L)•销毁顺序表:DestroyList(&L)2.3 链表链表是通过一组地址不连续的存储单元来存储数据元素的线性结构。

2.3.1 链表的结构链表的结构包括两部分:头结点和数据结点。

头结点保存链表的基本信息,数据结点存储数据元素本身以及指向下一个结点的指针。

2.3.2 链表的基本操作•初始化链表:InitList(&L)•判断链表是否为空:ListEmpty(L)•获取链表长度:ListLength(L)•插入数据元素到链表:ListInsert(&L, i, e)•删除链表中的数据元素:ListDelete(&L, i, &e)•获取链表中的数据元素:GetElem(L, i, &e)•查找链表中元素的位置:LocateElem(L, e)•清空链表:ClearList(&L)•销毁链表:DestroyList(&L)第三章:栈和队列3.1 栈栈是一种只能在表头进行插入和表头删除操作的线性表。

(完整版) 《数据结构》教材课后习题+答案

(完整版) 《数据结构》教材课后习题+答案

第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.1简述下列术语:数据,数据元素、数据对象、数据结构、存储结构、数据类型和抽象数据类型。

解:数据是对客观事物的符号表示。

在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。

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

数据对象是性质相同的数据元素的集合,是数据的一个子集。

数据结构是相互之间存在一种或多种特定关系的数据元素的集合。

存储结构是数据结构在计算机中的表示。

数据类型是一个值的集合和定义在这个值集上的一组操作的总称。

抽象数据类型是指一个数学模型以及定义在该模型上的一组操作。

是对一般数据类型的扩展。

1.2试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别。

解:抽象数据类型包含一般数据类型的概念,但含义比一般数据类型更广、更抽象。

一般数据类型由具体语言系统内部定义,直接提供给编程者定义用户数据,因此称它们为预定义数据类型。

抽象数据类型通常由编程者定义,包括定义它所使用的数据和在这些数据上所进行的操作。

在定义抽象数据类型中的数据部分和操作部分时,要求只定义到数据的逻辑结构和操作说明,不考虑数据的存储结构和操作的具体实现,这样抽象层次更高,更能为其他用户提供良好的使用接口。

1.3设有数据结构(D,R),其中Dd1,d2,d3,d4,Rr,rd1,d2,d2,d3,d3,d4试按图论中图的画法惯例画出其逻辑结构图。

解:1.4试仿照三元组的抽象数据类型分别写出抽象数据类型复数和有理数的定义(有理数是其分子、分母均为自然数且分母不为零的分数)。

解:数据对象:D={r,i|r,i为实数}数据关系:R={}基本操作:操作结果:构造一个复数C,其实部和虚部分别为re和imDetroyCmople某(&C)操作结果:销毁复数CGet(C,k,&e)操作结果:用e返回复数C的第k元的值操作结果:改变复数C的第k元的值为e操作结果:如果复数C的两个元素按升序排列,则返回1,否则返回0Put(&C,k,e)IAcending(C)ADTRationalNumber{数据对象:D={,m|,m为自然数,且m不为0}数据关系:R={}基本操作:InitRationalNumber(&R,,m)操作结果:构造一个有理数R,其分子和分母分别为和mDetroyRationalNumber(&R)操作结果:销毁有理数RGet(R,k,&e)操作结果:用e返回有理数R的第k元的值操作结果:改变有理数R 的第k元的值为e操作结果:若有理数R的两个元素按升序排列,则返回1,否则返回0操作结果:若有理数R的两个元素按降序排列,则返回1,否则返回0操作结果:用e返回有理数R的两个元素中值较大的一个操作结果:用e 返回有理数R的两个元素中值较小的一个Put(&R,k,e)IAcending(R)IDecending(R)Ma某(R,&e)Min(R,&e) IDecending(C)操作结果:如果复数C的两个元素按降序排列,则返回1,否则返回0操作结果:用e返回复数C的两个元素中值较大的一个操作结果:用e 返回复数C的两个元素中值较小的一个Ma某(C,&e)Min(C,&e) }ADTRationalNumber(1)product=1;i=1;while(i<=n){product某=i;i++;}(2)i=0;do{i++;}while((i!=n)&&(a[i]!=某));(3)witch{cae某1.5试画出与下列程序段等价的框图。

《数据结构》习题集答案:第1章 绪论

《数据结构》习题集答案:第1章 绪论

第1章绪论参考答案一、选择题1、B,H2、A,B3、D,C4、C5、C,E6、A,B7、A8、D9、B10、A11、D二、填空题1、集合、线性、树型和图型,非线性2、集合、线性、树型、图形结构3、有穷性、确定性、可行性、输入和输出4、时间复杂度和空间复杂度5、一对一、一对多、多对多6、O(n)7、O(m*n)8、逻辑关系9、数据的逻辑结构、数据的存储结构、对数据施加的操作10、没有、一个11、一个、一个、后继、任意个12、任意个13、物理14、数据、数据元素、数据项15、结点、记录、元素、顶点16、顺序存储、链式存储、索引存储、散列存储17、正确性、可读性、健壮性、高效性18、时间复杂度、空间复杂度、计算量、存储量19、问题规模20、1、log2 n、n、n2、2n、不可行21、设计、实现22、数据元素23、数学模型1/2 北京理工大学珠海学院计算机学院“数据结构”课程组编制2011-3-1三、判断题1. ×2.√3.√4. ×5.√6.√7. ×8. ×四、计算题1.(1)n-2(2)n(n+1)/2(3)n2.O(n)O(n2)3.略4.略5.解答:数据是信息的载体,是描述客观事物的数、字符,以及所有能输入到计算机中并被计算机程序识别和处理的符号的集合。

数据元素是数据的基本单位。

在不同的条件下,数据元素又可称为元素、结点、顶点、记录等。

数据结构是指相互之间存在着一种或多种关系的数据元素的集合。

数据对象是性质相同的数据元素的集合。

6.解答:在数据结构中,逻辑结构与存储结构是密切相关的,存储结构不仅将数据元素存储到计算机中,而且还要表示各数据元素之间的逻辑关系。

逻辑结构与计算机无关,存储结构是数据元素及其之间的关系在计算机中的表示。

7.(2/ 3)n,210,log2n,√n ,n,n2/3,nlog2n,n2,n3,2n,n!2/2 北京理工大学珠海学院计算机学院“数据结构”课程组编制2011-3-1。

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

第一章绪论
1.1 试写一个算法,自大到小依次输出顺序读入的三个数X、Y和Z的值。

void Desceding(int &x, int &y, int &z) {
//将x、y和z按从大到小的顺序排列
if (x<y) x←→y;
if (x<z) x←→z;
if (y<z) y←→z;
}//Desceding
1.2 试编一个算法求一维数组float a[n]中的所有元素之和。

float sum(float a[], int n) {
// 求数组a[n]中所有元素之和
for (i=0; i<n; ++i) sum+=a[i];
return sum;
}//sum
1.3 分析下列各算法的时间复杂度:
(1)void prime(int n){
/* 判断n是否是素数*/
for (i=2; ((n%i)!=0)&&(i<sqrt(n)); i++);
if i>sqrt(n) printf("%d is a prime number", n)
else printf("%d is not a prime number", n);
}/* prime */
最坏情况下O(sqrt(n))
(2) float sum1(int n){
/* 计算1!+2!+…+n! */
p=1; sum1=0;
for (i=1; i<=n; ++i){
p=p*i; sum1=sum1+p
}
}/* sum1 */
O(n)
(3) float sum2(int n){
/* 计算1!+2!+…+n! */
sum2=0;
for (i=1; i<=n; ++i){
p=1;
for (j=1; j<=i; ++j) p=p*j;
sum2=sum2+p;
}
}/* sum2 */
O(n2)
(4) void sort(int a[],int n){
/* 将数组a中的元素按自小到大的顺序排列*/
for (i=1; i<=n-1; ++i){
k=i;
for (j=i+1; j<=n; ++j) if (a[j]<a[k]) k=j;
if (k<>j) {x=a[i];a[i]=a[k];a[k]=x;}
}
}/* sort */
O(n2)
(5)void matrimult(a[m][n],b[n][l],c[m][l],int m,int n,int l){ /* a为m×n阶的矩阵,b为n×l阶的矩阵,c为m×l阶的矩阵*/ /* 计算c=a*b */
for (i=1; i<=m; ++i)
for (j=1; j<=l; ++j)
c[i,j]=0;
for (i=1; i<=m; ++i)
for (j=1; j<=l; ++j)
for (k=1; k<=n; ++k)
c[i,j]=c[i,j]+a[i,k]*b[k,i];
}/* matrimult */
O(n3)
1.16
void print_descending(int x,int y,int z) //按从大到小顺序输出三个数{
scanf("%d,%d,%d",&x,&y,&z);
if(x<y) x<->y; //<->为表示交换的双目运算符,以下同
if(y<z) y<->z;
if(x<y) x<->y; //冒泡排序
printf("%d %d %d",x,y,z);
}//print_descending
1.17
Status fib(int k,int m,int &f)//求k阶斐波那契序列的第m项的值f
{
int tempd;
if(k<2||m<0) return ERROR;
if(m<k-1) f=0;
else if (m==k-1) f=1;
else
{
for(i=0;i<=k-2;i++) temp[i]=0;
temp[k-1]=1; //初始化
for(i=k;i<=m;i++) //求出序列第k至第m个元素的值
{
sum=0;
for(j=i-k;j<i;j++) sum+=temp[j];
temp[i]=sum;
}
f=temp[m];
}
return OK;
}//fib
分析:通过保存已经计算出来的结果,此方法的时间复杂度仅为O(m2).如果采用递归编程(大多数人都会首先想到递归方法),则时间复杂度将高达O(k m).
1.18
typedef struct{
char *sport;
enum{male,female} gender;
char schoolname; //校名为'A','B','C','D'或'E'
char *result;
int score;
} resulttype;
typedef struct{
int malescore;
int femalescore;
int totalscore;
} scoretype;
void summary(resulttype result[ ])//求各校的男女总分和团体总分,假设结果已经储存在result[ ]数组中
{
scoretype score;
i=0;
while(result[i].sport!=NULL)
{
switch(result[i].schoolname)
{
case 'A':
score[ 0 ].totalscore+=result[i].score;
if(result[i].gender==0) score[ 0 ].malescore+=result[i].score;
else score[ 0 ].femalescore+=result[i].score;
break;
case 'B':
score.totalscore+=result[i].score;
if(result[i].gender==0) score.malescore+=result[i].score;
else score.femalescore+=result[i].score;
break;
}
i++;
}
for(i=0;i<5;i++)
{
printf("School %d:\n",i);
printf("Total score of male:%d\n",score[i].malescore);
printf("Total score of female:%d\n",score[i].femalescore);
printf("Total score of all:%d\n\n",score[i].totalscore);
}
}//summary
1.19
Status algo119(int a[ARRSIZE])//求i!*2^i序列的值且不超过maxint
{
last=1;
for(i=1;i<=ARRSIZE;i++)
{
a[i-1]=last*2*i;
if((a[i-1]/last)!=(2*i)) reurn OVERFLOW;
last=a[i-1];
return OK;
}
}//algo119
分析:当某一项的结果超过了maxint时,它除以前面一项的商会发生异常.
1.20
void polyvalue()
{
float ad;
float *p=a;
printf("Input number of terms:");
scanf("%d",&n);
printf("Input the %d coefficients from a0 to a%d:\n",n,n);
for(i=0;i<=n;i++) scanf("%f",p++);
printf("Input value of x:");
scanf("%f",&x);
p=a;xp=1;sum=0; //xp用于存放x的i次方
for(i=0;i<=n;i++)
{
sum+=xp*(*p++);
xp*=x;
}
printf("Value is:%f",sum);
}//polyvalue。

相关文档
最新文档