数据结构课后习题及解

合集下载

数据结构课后习题答案详解C语言版严蔚敏

数据结构课后习题答案详解C语言版严蔚敏

数据结构习题集答案(C语言版严蔚敏)第2章线性表2.1 描述以下三个概念的区别:头指针,头结点,首元结点(第一个元素结点)。

解:头指针是指向链表中第一个结点的指针。

首元结点是指链表中存储第一个数据元素的结点。

头结点是在首元结点之前附设的一个结点,该结点不存储数据元素,其指针域指向首元结点,其作用主要是为了方便对链表的操作。

它可以对空表、非空表以及首元结点的操作进行统一处理。

2.2 填空题。

解:(1) 在顺序表中插入或删除一个元素,需要平均移动表中一半元素,具体移动的元素个数与元素在表中的位置有关。

(2) 顺序表中逻辑上相邻的元素的物理位置必定紧邻。

单链表中逻辑上相邻的元素的物理位置不一定紧邻。

(3) 在单链表中,除了首元结点外,任一结点的存储位置由其前驱结点的链域的值指示。

(4) 在单链表中设置头结点的作用是插入和删除首元结点时不用进行特殊处理。

2.3 在什么情况下用顺序表比链表好解:当线性表的数据元素在物理位置上是连续存储的时候,用顺序表比用链表好,其特点是可以进行随机存取。

2.4 对以下单链表分别执行下列各程序段,并画出结果示意图。

解:2.5 画出执行下列各行语句后各指针及链表的示意图。

L=(LinkList)malloc(sizeof(LNode)); P=L;for(i=1;i<=4;i++){P->next=(LinkList)malloc(sizeof(LNode));P=P->next; P->data=i*2-1;}P->next=NULL;for(i=4;i>=1;i--) Ins_LinkList(L,i+1,i*2);for(i=1;i<=3;i++) Del_LinkList(L,i);解:2.6 已知L是无表头结点的单链表,且P结点既不是首元结点,也不是尾元结点,试从下列提供的答案中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是__________________。

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

数据结构课后习题及解析第二章
利用单向循环链表作为存储结构模拟此过程,按照出列顺序打印出各人的编号。
例如m的初值为20;n=7,7个人的密码依次是:3,1,7,2,4,8,4,出列的顺序为6,1,4,7,2,3,5。
第二章答案
约瑟夫环问题
约瑟夫问题的一种描述为:编号1,2,…,n的n个人按顺时针方向围坐一圈,每个人持有一个密码(正整数)。一开始任选一个报数上限值m,从第一个人开始顺时针自1开始顺序报数,报到m时停止报数。报m的人出列,将他的密码作为新的m值,从他在顺时针方向上的下一个人开始重新从1报数,如此下去,直至所有的人全部出列为止。试设计一个程序,求出出列顺序。利用单向循环链表作为存储结构模拟此过程,按照出列顺序打印出各人的编号。
9.假设有一个循环链表的长度大于1,且表中既无头结点也无头指针。已知s为指向链表某个结点的指针,试编写算法在链表中删除指针s所指结点的前趋结点。
10.已知有单链表表示的线性表中含有三类字符的数据元素(如字母字符、数字字符和其它字符),试编写算法来构造三个以循环链表表示的线性表,使每个表中只含同一类的字符,且利用原表中的结点空间作为这三个表的结点空间,头结点可另辟空间。
r=p;
}
}
r->next=L->next;
printf("请输入第一个报数上限值m(m>0):");
scanf("%d",&m);
printf("*****************************************\n");
printf("出列的顺序为:\n");
q=L;
p=L->next;
7.试分别以不同的存储结构实现线性表的就地逆置算法,即在原表的存储空间将线性表(a1, a2..., an)逆置为(an, an-1,..., a1)。

数据结构习题和答案及解析

数据结构习题和答案及解析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

数据结构课后习题答案及解析第六章

数据结构课后习题答案及解析第六章

第六章树和二叉树(下载后用阅读版式视图或web版式可以看清)习题一、选择题1.有一“遗传”关系:设x是y的父亲,则x可以把它的属性遗传给y。

表示该遗传关系最适合的数据结构为( )。

A.向量B.树 C图 D.二叉树2.树最合适用来表示( )。

A.有序数据元素 B元素之间具有分支层次关系的数据C无序数据元素 D.元素之间无联系的数据3.树B的层号表示为la,2b,3d,3e,2c,对应于下面选择的( )。

A. la (2b (3d,3e),2c)B. a(b(D,e),c)C. a(b(d,e),c)D. a(b,d(e),c)4.高度为h的完全二叉树至少有( )个结点,至多有( )个结点。

A. 2h_lB.h C.2h-1 D. 2h5.在一棵完全二叉树中,若编号为f的结点存在右孩子,则右子结点的编号为( )。

A. 2iB. 2i-lC. 2i+lD. 2i+26.一棵二叉树的广义表表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为 ( )。

A.3B.4C.5D.67.深度为5的二叉树至多有( )个结点。

A. 31B. 32C. 16D. 108.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为( )个。

A. 15B. 16C. 17D. 479.题图6-1中,( )是完全二叉树,( )是满二叉树。

..专业知识编辑整理..10.在题图6-2所示的二叉树中:(1)A结点是A.叶结点 B根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(2)J结点是A.叶结点 B.根结点但不是分支结点 C根结点也是分支结点 D.分支结点但不是根结点(3)F结点的兄弟结点是A.EB.D C.空 D.I(4)F结点的双亲结点是A.AB.BC.CD.D(5)树的深度为A.1B.2C.3D.4(6)B结点的深度为A.1B.2C.3D.4(7)A结点所在的层是A.1B.2C.3D.4..专业知识编辑整理..11.在一棵具有35个结点的完全二叉树中,该树的深度为( )。

数据结构习题参考答案与解析

数据结构习题参考答案与解析

习题1 参考答案1至8题答案略。

9.(1)【解】该逻辑结构为线性结构,其图形表示如下:(2)【解】该逻辑结构为树型结构,其图形表示如下:(3)【解】该逻辑结构为图型结构,其图形表示如下:(4)【解】该逻辑结构为线性结构,其图形表示如下:10.【解】该图书库存管理系统所要处理的数据对象为图书,所以该问题中涉及的数据元素为图书,设数据元素类型为bookType 类型。

每个数据元素应包含的数据项有图书编号、书名、作者、出版社、出版日期等。

可用一个表格(如下表)的形式表示图书间的逻辑关系,即该问题数学模型可采用简单的线性结构来表示。

根据问题需求功能目标,此模型的所需的主要处理操作有插入、删除、查找和修改等基本操作。

所以,现用抽象数据类型bookList 表示问题模型,其逻辑结构与基本操作的定义如下: (1)逻辑结构bookList=( D, {r} )D={b i | b i 为bookType 类型的元素,i=1,2,3, ....., n ,n ≥0} r ={ <bk i ,b i+1>| i=1,2,…, n -1, n ≥0 } (2)基本操作 ①初始化操作函数:InitBookList(&BL)。

……初始条件:图书表BL 不存在。

操作结果:构造一个空的图书表BL 。

②求图书表长度操作函数:bookListLength(BL)。

初始条件:图书表BL 已存在。

操作结果:返回图书表BL 中所包含的数据元素(图书)的个数。

③取图书表中元素操作函数:getBook(BL, i, &b)。

初始条件:图书表BL 已存在,且1≤i ≤bookListLength(BL)。

操作结果:用b 返回图书表BL 中的第i 个数据元素的值。

④按编号查找操作函数:locateById(BL, id)。

初始条件:图书表BL 已存在,id 是给定的一个图书编号。

操作结果:返回图书表BL 中图书编号为id 的数据元素的位序,若这样的数据元素不存在,则返回0。

数据结构课程课后习题答案及解析

数据结构课程课后习题答案及解析

《数据结构简明教程》练习题及参考答案练习题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)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。

答:①数据元素②关系专业资料整理分享数据结构简明教程(4)在线性结构中,第一个结点 ① 前驱结点,其余每个结点有且只有1个前驱结点;最后一个结点 ② 后继结点,其余每个结点有且只有1个后继结点。

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

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

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

答:①顺序 ②链式 ③索引 ④哈希(8)一个算法的效率可分为 ① 效率和 ② 效率。

数据结构课后习题及答案

数据结构课后习题及答案

填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。

2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。

2.6.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。

3.6.循环队列的引入,目的是为了克服假溢出。

4.2.长度为0的字符串称为空串。

4.5.组成串的数据元素只能是字符。

4.8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。

7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。

5.7.广义表的深度是广义表中括号的重数7.8.有向图G可拓扑排序的判别条件是有无回路。

7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。

8.8.直接定址法法构造的哈希函数肯定不会发生冲突。

9.2.排序算法所花费的时间,通常用在数据的比较和交换两大操作。

1.1.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。

1.2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。

1.3.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。

1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。

1.5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。

2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。

2.9.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。

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

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

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. 描述以下三个概念的区别:头指针,头结点,首元素结点。

2. 填空:(1)在顺序表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。

(2)在顺序表中,逻辑上相邻的元素,其物理位置相邻。

在单链表中,逻辑上相邻的元素,其物理位置相邻。

(3)在带头结点的非空单链表中,头结点的存储位置由指示,首元素结点的存储位置由指示,除首元素结点外,其它任一元素结点的存储位置由指示。

3.已知L是无表头结点的单链表,且P结点既不是首元素结点,也不是尾元素结点。

按要求从下列语句中选择合适的语句序列。

a. 在P结点后插入S结点的语句序列是:。

b. 在P结点前插入S结点的语句序列是:。

c. 在表首插入S结点的语句序列是:。

d. 在表尾插入S结点的语句序列是:。

供选择的语句有:(1)P->next=S;(2)P->next= P->next->next;(3)P->next= S->next;(4)S->next= P->next;(5)S->next= L;(6)S->next= NULL;(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;4. 设线性表存于a(1:arrsize)的前elenum个分量中且递增有序。

试写一算法,将X插入到线性表的适当位置上,以保持线性表的有序性。

5. 写一算法,从顺序表中删除自第i个元素开始的k个元素。

6. 已知线性表中的元素(整数)以值递增有序排列,并以单链表作存储结构。

试写一高效算法,删除表中所有大于mink且小于maxk的元素(若表中存在这样的元素),分析你的算法的时间复杂度(注意:mink和maxk是给定的两个参变量,它们的值为任意的整数)。

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

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

数据结构课后习题及解析第六章第六章习题1.试分别画出具有3个结点的树和3个结点的二叉树的所有不同形态。

2.对题1所得各种形态的二叉树,分别写出前序、中序和后序遍历的序列。

3.已知一棵度为k的树中有n1个度为1的结点,n2个度为2的结点,……,nk个度为k的结点,则该树中有多少个叶子结点并证明之。

4.假设一棵二叉树的先序序列为EBADCFHGIKJ,中序序列为ABCDEFGHIJK,请画出该二叉树。

5.已知二叉树有50个叶子结点,则该二叉树的总结点数至少应有多少个?6.给出满足下列条件的所有二叉树:①前序和后序相同②中序和后序相同③前序和后序相同7. n个结点的K叉树,若用具有k个child域的等长链结点存储树的一个结点,则空的Child 域有多少个?8.画出与下列已知序列对应的树T:树的先根次序访问序列为GFKDAIEBCHJ;树的后根次序访问序列为DIAEKFCJHBG。

9.假设用于通讯的电文仅由8个字母组成,字母在电文中出现的频率分别为:0.07,0.19,0.02,0.06,0.32,0.03,0.21,0.10请为这8个字母设计哈夫曼编码。

10.已知二叉树采用二叉链表存放,要求返回二叉树T的后序序列中的第一个结点指针,是否可不用递归且不用栈来完成?请简述原因.11. 画出和下列树对应的二叉树:12.已知二叉树按照二叉链表方式存储,编写算法,计算二叉树中叶子结点的数目。

13.编写递归算法:对于二叉树中每一个元素值为x的结点,删去以它为根的子树,并释放相应的空间。

14.分别写函数完成:在先序线索二叉树T中,查找给定结点*p在先序序列中的后继。

在后序线索二叉树T中,查找给定结点*p在后序序列中的前驱。

15.分别写出算法,实现在中序线索二叉树中查找给定结点*p在中序序列中的前驱与后继。

16.编写算法,对一棵以孩子-兄弟链表表示的树统计其叶子的个数。

17.对以孩子-兄弟链表表示的树编写计算树的深度的算法。

数据结构课程课后习题集答案解析

数据结构课程课后习题集答案解析

《数据结构简明教程》练习题及参考答案练习题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)数据结构被形式地定义为(D,R),其中D是①的有限集合,R是D上的②有限集合。

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

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

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

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

答:①顺序 ②链式 ③索引 ④哈希(8)一个算法的效率可分为 ① 效率和 ② 效率。

数据结构课后习题及答案

数据结构课后习题及答案

填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。

2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。

2.6.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。

3.6.循环队列的引入,目的是为了克服假溢出。

4.2.长度为0的字符串称为空串。

4.5.组成串的数据元素只能是字符。

4.8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。

7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。

5.7.广义表的深度是广义表中括号的重数7.8.有向图G可拓扑排序的判别条件是有无回路。

7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。

8.8.直接定址法法构造的哈希函数肯定不会发生冲突。

9.2.排序算法所花费的时间,通常用在数据的比较和交换两大操作。

1.1.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。

1.2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。

1.3.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。

1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。

1.5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。

2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。

2.9.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。

数据结构课后习题及答案

数据结构课后习题及答案

填空题(10 * 1’ = 10’)一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储结构为宜。

2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储结构。

2.6.带头结点的单链表L中只有一个元素结点的条件是L->Next->Next==Null。

3.6.循环队列的引入,目的是为了克服假溢出。

4.2.长度为0的字符串称为空串。

4.5.组成串的数据元素只能是字符。

4.8.设T和P是两个给定的串,在T中寻找等于P的子串的过程称为模式匹配,又称P为模式。

7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。

5.7.广义表的深度是广义表中括号的重数7.8.有向图G可拓扑排序的判别条件是有无回路。

7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。

8.8.直接定址法法构造的哈希函数肯定不会发生冲突。

9.2.排序算法所花费的时间,通常用在数据的比较和交换两大操作。

1.1.通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。

1.2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。

1.3.存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。

1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。

1.5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。

2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s->prior= p->prior; s->next= p; p->prior- next= s; p->prior= s;。

2.9.在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。

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

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

第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个元素的地址是()。

《数据结构》教材课后习题+答案

《数据结构》教材课后习题+答案

《数据结构》教材课后习题+答案数据结构第一章介绍数据结构是计算机科学中重要的概念,它涉及到组织和存储数据的方法和技术。

数据结构的选择对于算法的效率有着重要的影响。

本教材为读者提供了丰富的课后习题,以帮助读者巩固所学知识并提高解决问题的能力。

下面是一些选定的习题及其答案,供读者参考。

第二章线性表习题一:给定一个顺序表L,编写一个算法,实现将其中元素逆置的功能。

答案一:算法思路:1. 初始化两个指针i和j,分别指向线性表L的首尾两个元素2. 对于L中的每一个元素,通过交换i和j所指向的元素,将元素逆置3. 当i>=j时,停止逆置算法实现:```pythondef reverse_list(L):i, j = 0, len(L)-1while i < j:L[i], L[j] = L[j], L[i]i += 1j -= 1```习题二:给定两个线性表A和B,编写一个算法,将线性表B中的元素按顺序插入到线性表A中。

答案二:算法思路:1. 遍历线性表B中的每一个元素2. 将B中的元素依次插入到A的末尾算法实现:```pythondef merge_lists(A, B):for element in B:A.append(element)```第三章栈和队列习题一:编写一个算法,判断一个表达式中的括号是否匹配。

表达式中的括号包括小括号"()"、中括号"[]"和大括号"{}"。

答案一:算法思路:1. 遍历表达式中的每一个字符2. 当遇到左括号时,将其推入栈中3. 当遇到右括号时,判断栈顶元素是否与其匹配4. 当遇到其他字符时,继续遍历下一个字符5. 最后判断栈是否为空,若为空则表示括号匹配算法实现:```pythondef is_matching(expression):stack = []for char in expression:if char in "([{":stack.append(char)elif char in ")]}":if not stack:return Falseelif (char == ")" and stack[-1] == "(") or (char == "]" and stack[-1] == "[") or (char == "}" and stack[-1] == "{"):stack.pop()else:return Falsereturn not stack```习题二:利用两个栈实现一个队列。

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

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

严蔚敏数据结构课后习题及答案解析第一章绪论一、选择题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 简述下列概念数据,数据元素,数据类型,数据结构,逻辑结构,存储结构,算法。

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

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

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

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

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

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

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

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

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

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

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

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

逻辑结构与计算机无关。

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

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

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

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

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

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

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

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

数据结构课后习题详解(超完整超经典)

数据结构课后习题详解(超完整超经典)

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

数据结构课后习题及解析第五章
第五章习题
5.1 假设有6行8列的二维数组A,每个元素占用6个字节,存储器按字节编址。

已知A的基地址为
1000,计算:
数组A共占用多少字节;
数组A的最后一个元素的地址;
按行存储时元素A
36
的地址;
按列存储时元素A
36
的地址;
5.2 设有三对角矩阵A
n×n ,将其三条对角线上的元素逐行地存于数组B(1:3n-2)中,使得B[k]= a
ij

求:
(1)用i,j表示k的下标变换公式;
(2)用k表示i,j的下标变换公式。

5.3假设稀疏矩阵A和B均以三元组表作为存储结构。

试写出矩阵相加的算法,另设三元组表C存放
结果矩阵。

5.4在稀疏矩阵的快速转置算法5.2中,将计算position[col]的方法稍加改动,使算法只占用一个
辅助向量空间。

5.5写一个在十字链表中删除非零元素a
ij
的算法。

5.6画出下面广义表的两种存储结构图示:
((((a), b)), ((( ), d), (e, f)))
5.7求下列广义表运算的结果:
(1)HEAD[((a,b),(c,d))];
(2)TAIL[((a,b),(c,d))];
(3)TAIL[HEAD[((a,b),(c,d))]];
(4)HEAD[TAIL[HEAD[((a,b),(c,d))]]];
(5)TAIL[HEAD[TAIL[((a,b),(c,d))]]];
实习题
若矩阵A
m×n 中的某个元素a
ij
是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该
矩阵中的一个马鞍点。

假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点。

第五章答案
5.2设有三对角矩阵A n×n,将其三条对角线上的元素逐行的存于数组B[1..3n-2]中,使得B[k]=a ij,求:(1)用i,j表示k的下标变换公式;(2)用k表示i、j的下标变换公式。

【解答】(1)k=2(i-1)+j
(2) i=[k/3]+1, j=[k/3]+k%3 ([ ]取整,%取余)
5.4在稀疏矩阵的快速转置算法5.2中,将计算position[col]的方法稍加改动,使算法只占用一个辅助向量空间。

【解答】算法(一)
FastTransposeTSMatrix(TSMartrix A, TSMatrix *B)
{/*把矩阵A转置到B所指向的矩阵中去,矩阵用三元组表表示*/
int col,t,p,q;
int position[MAXSIZE];
B->len=A.len; B->n=A.m; B->m=A.n;
if(B->len>0)
{
position[1]=1;
for(t=1;t<=A.len;t++)
position[A.data[t].col+1]++; /*position[col]存放第col-1列非零元素的个数, 即利用pos[col]来记录第col-1列中非零元素的个数*/
/*求col列中第一个非零元素在B.data[ ]的位置,存放在position[col]中*/ for(col=2;col<=A.n;col++)
position[col]=position[col]+position[col-1];
for(p=1;p<A.len;p++)
{
col=A.data[p].col;
q=position[col];
B->data[q].row=A.data[p].col;
B->data[q].col=A.data[p].row;
B->data[q].e=A.data[p].e;
Position[col]++;
}
}
}
算法(二)
FastTransposeTSMatrix(TSMartrix A, TSMatrix *B)
{
int col,t,p,q;
int position[MAXSIZE];
B->len=A.len; B->n=A.m; B->m=A.n;
if(B->len>0)
{
for(col=1;col<=A.n;col++)
position[col]=0;
for(t=1;t<=A.len;t++)
position[A.data[t].col]++; /*计算每一列的非零元素的个数*/
/*从最后一列起求每一列中第一个非零元素在B.data[]中的位置,存放在position[col]中*/ for(col=A.n,t=A.len;col>0;col--)
{ t=t-position[col];
position[col]=t+1;
}
for(p=1;p<A.len;p++)
{
col=A.data[p].col;
q=position[col];
B->data[q].row=A.data[p].col;
B->data[q].col=A.data[p].row;
B->data[q].e=A.data[p].e;
Position[col]++;
}
}
}
5.6画出下面广义表的两种存储结构图示:((((a), b)), ((( ), d), (e, f)))
【解答】
第一种存储结构
第二种存储结构
5.7求下列广义表运算的结果:
(1)HEAD[((a,b),(c,d))]; (a,b)
(2)TAIL[((a,b),(c,d))]; ((c,d))
(3)TAIL[HEAD[((a,b),(c,d))]]; (b)
(4)HEAD[TAIL[HEAD[((a,b),(c,d))]]]; b
(5)TAIL[HEAD[TAIL[((a,b),(c,d))]]]; (d)
提示:
第五章数组和广义表
习题
1.假设有6行8列的二维数组A,每个元素占用6个字节,存储器按字节编址。

已知A的基地址为1000,计算:
(1)数组A共占用多少字节;(288)
(2)数组A的最后一个元素的地址;(1282)
(3)按行存储时,元素A36的地址;(1126)
(4)按列存储时,元素A36的地址;(1192)
[注意]:本章自定义数组的下标从1开始。

2.设有三对角矩阵(a ij)n×n ,将其三条对角线上的元素逐行地存于数组B(1:3n-2)中,使得B[k]= a ij,求:
(1)用i,j表示k的下标变换公式;
(2)用k表示i,j的下标变换公式。

i = k/3 + 1, j = k%3 + i - 1 = k%3 + k/3
或:
i = k/3 + 1, j = k - 2×( k/3 )
2.假设稀疏矩阵A和B均以三元组表作为存储结构。

试写出矩阵相加的算法,另设三元组表C存放结果矩阵。

[提示]:参考P.28例、P.47例。

4.在稀疏矩阵的快速转置算法5.2中,将计算position[col]的方法稍加改动,使算法
只占用一个辅助向量空间。

[提示]:
(1)position[ k ] 中为第k列非零元素个数,k = 1, 2, …, n
(2)position[ 0 ] = 1; (第1列中第一个非零元素的正确位置)
(3)position[ k ] = position[ k – 1 ] + position[ k ] , k = 1, 2, …, n
(4)position[ k ] = position[ k – 1 ] , k = n, n – 1 , … ,1
5.写一个在十字链表中删除非零元素a ij的算法。

[提示]:“删除”两次,释放一次。

6.画出下面广义表的两种存储结构图示:
((((a), b)), ((( ), d), (e, f)))
第一种存储结构(自底向上看)
7.求下列广义表运算的结果:
(1)HEAD[((a,b),(c,d))];
(2)TAIL[((a,b),(c,d))];
(3)TAIL[HEAD[((a,b),(c,d))]];
(4)HEAD[TAIL[HEAD[((a,b),(c,d))]]]; b (5)TAIL[HEAD[TAIL[((a,b),(c,d))]]]; (d)
参考题
8.试设计一个算法,将数组A(0:n-1)中的元素循环右移k位,并要求只用一个元素大小的附加存储,元素移动或交换次数为O(n)。

9.假设按低下标优先(以最左的下标为主序)存储整数数组A(1:8, 1:2, 1:4, 1:7)时,第一个元素的字节地址是100,每个整数占4个字节,问元素A(4, 2, 3, 5)的存储地址是什么?
10. 高下标优先(以最右的下标为主序)存储整数数组A(1:8, 1:2, 1:4, 1:7)时,顺序列出数组A的所有元素。

11.试编写一个以三元组形式输出用十字链表表示的稀疏矩阵中非零元素及其下标的算法。

实习题
1.若矩阵A m×n中的某个元素a ij是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。

假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点。

相关文档
最新文档