算法与数据结构 张乃孝 前三章习题课
- 格式:ppt
- 大小:285.50 KB
- 文档页数:76
数据结构(徐孝凯编著)部分习题参考解答第一章 绪论1.1 单选题1. A2. D3. B4. C5. D6. B7. D1.2 填空题(给单号题解答)1. 集合结构,线性结构,树结构,图结构 (次序无先后) 3. 1:1, 1:N, M:N (或者1对1,1对N ,M 对N) 5. 引用 7. 实参,值9. sizeof(a), a+i (或者&a[i],或者(char*)a+i*sizeof(a[i]))11. n, n(n+1)/2, O(n 2)13. O(n 3) 15. 35/12提示:在含有n 个元素的数表中顺序查找任一元素的平均比较次数为p c i i i n=∑1,p i为查找第i 个元素的概率,c i 是查找第i 个元素时需要比较的元素数,查找所有元素的概率之和为1,若查找每个元素的概率相同,则平均查找长度的计算公式可简化为11ni i nc =∑。
计算此题的计算式为)76543(121241131+++++⨯+⨯1.4 算法分析题(给单号题解答)1. 判断n 是否是一个素数,若是则返回数值1,否则返回0。
该算法的时间复杂度为O (n )。
3. 计算∑=ni i 1!的值。
时间复杂度为O (n 2)。
5. 打印出一个具有n 行的乘法表,第i 行(1≤i ≤n )中有n-i+1个乘法项,每个乘法项为i 与j (i ≤j ≤n )的乘积。
时间复杂度为O (n 2)。
7. 矩阵相乘,即a[M][N]×b[N][L]→c[M][L]。
时间复杂度为O (M ×N ×L)。
1.5 算法设计题 1. (给单号题解答)(1) void InitQuadratic(Quadratic& q, float aa, float bb, float cc) { q.a=aa; q.b=bb; q.c=cc; }(3) float Eval(Quadratic& q, float x) { return (q.a*x*x+q.b*x+q.c);}(5) void Print(Quadratic& q){if (q.a) cout<<q.a<<"x**2";if(q.b)if(q.b>0)cout<<"+"<<q.b<<"x";elsecout<<q.b<<"x";if(q.c)if(q.c>0)cout<<"+"<<q.c;elsecout<<q.c;cout<<endl;}2.(给单号题解答)(1) char Compare(SimpleType x1, SimpleType x2){if(x1>x2) return '>';else if(x1==x2) return '=';else return '<';}时间复杂度为O(1)。
数据结构与算法张铭课后答案【篇一:第3章栈和队列数据结构张铭复习题】一、填空题(每空1分,共15分)1. 向量、栈和队列都是栈顶插入和删除元素;对于队列只能在队尾插入和队首删除元素。
2. 栈是一种特殊的线性表,允许插入和删除运算的一端称为。
不允许插入和删除运算的一端称为栈底。
3.4. 在一个循环队列中,队首指针指向队首元素的位置。
5. 在具有n个单元的循环队列中,队满时共有个元素。
6. 向栈中压入元素的操作是先,后。
7. 从循环队列中删除一个元素时,其操作是先移动队首指针,后。
8. 带表头结点的空循环双向链表的长度等于。
解:head二、判断正误(判断下列概念的正确性,并作出简要的说明。
)(每小题1分,共10分)错,线性表是逻辑结构概念,可以顺序存储或链式存储,与元素数据类型无关。
错,不一定吧?调用子程序或函数常用,cpu中也用队列。
(√)3. 栈是一种对所有插入、删除操作限于在表的一端进行的线性表,是一种后进先出型结构。
(√)4. 对于不同的使用者,一个表结构既可以是栈,也可以是队列,也可以是线性表。
正确,都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。
错,栈是逻辑结构的概念,是特殊殊线性表,而链表是存储结构概念,二者不是同类项。
错,他们都是线性逻辑结构,栈和队列其实是特殊的线性表,对运算的定义略有不同而已。
(√)7. 栈和队列的存储方式既可是顺序方式,也可是链接方式。
(√)8. 两个栈共享一片连续内存空间时,为提高内存利用率,减少溢出机会,应把两个栈的栈底分别设在这片内存空间的两端。
错,有可能。
三、单项选择题(每小题1分,共20分)(b)1.栈中元素的进出原则是A.先进先出B.后进先出C.栈空则进D.栈满则出(c)2.若已知一个栈的入栈序列是1,2,3,?,n,其输出序列为p1,p2,p3,?,pn,若p1=n,则pi为A.i B.n=iC.n-i+1 D.不确定解释:当p1=n,即n是最先出栈的,根据栈的原理,n必定是最后入栈的(事实上题目已经表明了),那么输入顺序必定是1,2,3,?,n,则出栈的序列是n,?,3,2,1。
数据结构与算法分析课后习题答案第一章:基本概念一、题目:什么是数据结构与算法?数据结构是指数据在计算机中存储和组织的方式,如栈、队列、链表、树等;而算法是一系列解决问题的清晰规范的指令步骤。
数据结构和算法是计算机科学的核心内容。
二、题目:数据结构的分类有哪些?数据结构可以分为以下几类:1. 线性结构:包括线性表、栈、队列等,数据元素之间存在一对一的关系。
2. 树形结构:包括二叉树、AVL树、B树等,数据元素之间存在一对多的关系。
3. 图形结构:包括有向图、无向图等,数据元素之间存在多对多的关系。
4. 文件结构:包括顺序文件、索引文件等,是硬件和软件相结合的数据组织形式。
第二章:算法分析一、题目:什么是时间复杂度?时间复杂度是描述算法执行时间与问题规模之间的增长关系,通常用大O记法表示。
例如,O(n)表示算法的执行时间与问题规模n成正比,O(n^2)表示算法的执行时间与问题规模n的平方成正比。
二、题目:主定理是什么?主定理(Master Theorem)是用于估计分治算法时间复杂度的定理。
它的公式为:T(n) = a * T(n/b) + f(n)其中,a是子问题的个数,n/b是每个子问题的规模,f(n)表示将一个问题分解成子问题和合并子问题的所需时间。
根据主定理的不同情况,可以得到算法的时间复杂度的上界。
第三章:基本数据结构一、题目:什么是数组?数组是一种线性数据结构,它由一系列具有相同数据类型的元素组成,通过索引访问。
数组具有随机访问、连续存储等特点,但插入和删除元素的效率较低。
二、题目:栈和队列有什么区别?栈和队列都是线性数据结构,栈的特点是“先进后出”,即最后压入栈的元素最先弹出;而队列的特点是“先进先出”,即最先入队列的元素最先出队列。
第四章:高级数据结构一、题目:什么是二叉树?二叉树是一种特殊的树形结构,每个节点最多有两个子节点。
二叉树具有左子树、右子树的区分,常见的有完全二叉树、平衡二叉树等。