数据结构与算法的习题
罗文劼《数据结构与算法》第4版-第1章课后习题参考答案
第1章绪论1.选择题(1)C (2)B (3)C (4)D (5)B2.判断题(1)√(2)Ⅹ(3)Ⅹ(4)Ⅹ(5)√3.简答题(1)根据数据元素之间的不同逻辑关系,通常将其划分为哪几类结构?【解答】常见的四种逻辑结构有:①集合结构:数据元素间的关系是“属于同一个集合”。
②线性结构:数据元素之间存在着一对一的关系。
③树型结构:数据元素之间存在着一对多的关系。
④图型结构:数据元素之间存在着多对多的关系。
(2)请描述线性结构中数据元素与数据元素之间的关系特点?【解答】线性结构的特点是数据元素之间是一种线性关系,数据元素“一个接一个的排列”。
在线性结构中,有且仅有一个元素被称为“第一个”,除第一个元素之外其他元素均有唯一一个“前驱”;有且仅有一个元素被称为“最后一个”,除最后一个元素之外其他元素均有唯一一个“后继”。
(3)请描述树形结构中数据元素与数据元素之间的关系特点?【解答】树形存储结构,就是数据元素与元素之间存在着一对多关系的数据结构。
在树形存储结构中,树的根节点没有前驱结点,其余的每个节点有且只有一个前驱结点,除叶子结点没有后续节点外,其他节点的后续节点可以有一个或者多个。
(4)常用的存储结构有哪几种,各自的特点是什么?【解答】常见的四种存储结构有:①顺序存储:把逻辑上相邻的元素存储在物理位置相邻的存储单元中。
顺序存储结构是一种最基本的存储表示方法,通常借助于程序设计语言中的数组来实现。
②链接存储:对逻辑上相邻的元素不要求不要求物理位置相邻的存储单元,元素间的逻辑关系通过附设的指针域来表示。
③索引存储:通过建立索引表存储结点信息的方法,其中索引表一般存储结点关键字和一个地点信息,可通过该地址找到结点其它信息。
④散列存储:根据结点的关键字直接计算出该结点的存储地址的方法。
(5)简述算法和程序的区别。
【解答】一个算法若用程序设计语言来描述,则它就是一个程序。
算法的含义与程序十分相似,但又有区别。
一个程序不一定满足有穷性。
《数据结构与算法》期末练习题1
一、选择:(每题2分,共30分) 简单选择排序 冒泡排序 归并排序 稳定1、下列排序算法中,其中( )是稳定的。
堆排序 希尔排序 快速排序 基数排序 不稳定A) 堆排序,冒泡排序 B) 快速排序,堆排序 C) 直接选择排序,希尔排序 D) 归并排序,冒泡排序 2、下列排序方法中,哪一个是稳定的排序方法?( )A)堆排序 B)二分法插入排序 C)希尔排序 D)快速排序3、一个栈的输入序列为1 2 3 4 5,则下列序列中不可能是栈的输出序列的是( )。
A) 2 3 4 1 5 B) 5 4 1 3 2 C) 2 3 1 4 5 D) 1 5 4 3 2 4、非空循环链表head 的尾结点 *p 满足下列( )条件A)head->next==p; B)head==p; C)p->next==head; D)p->next==0 5、下列编码中属前缀码的是( )A){1,01,000,001} B){1,01,011,010} C){0,10,110,11} D){0,1,00,11} 6、对于哈希函数H(key)=key % 7,被称为同义词的关键字是( )A)36和50 B)23和39 C)15和44 D)25和517、将一个长度为n 的向量的第i 个元素删除时,需要前移( )个元素。
A) i B) n-i C) n+1 D) n-i+18、有一个有序表为{ 1,3,9,12,32,41,45,62,77,88,92,100},用折半查找法,若要找62,要经过( )次比较。
A. 3 B. 6 C. 4 D. 5 9、高度为 K 的二叉树最大的结点数为( )。
A)2k B)2k-1 C)2k -1 D)2k-1-110、对表长为n 的顺序表进行顺序查找,在查找概率相等的情况下,查找成功的平均查找长度为( )A) (n-1)/2 B) n/2 C) (n+1)/2 D) n11、如果求一个连通图中以某个顶点为根的高度最小的生成树,应采用( )A)深度优先搜索算法 B)广度优先搜索算法 C)求最小生成树的prim 算法 D)拓扑排序算法12、已知有向图的正邻接链表的存储结构如下,从顶点1出发的按深度优先遍历序列是( )。
数据结构与算法复习题
《数据结构与算法》一、选择题1. 组成数据的基本单位是( )。
(A) 数据项 (B)数据类型 (C)数据元素 (D)数据变量2. 线性表的链接实现有利于( )运算。
(A) 插入 (B)读表元 (C)查找 (D)定位3. 串的逻辑结构与( )的逻辑结构不同。
(A) 线性表 (B)栈 (C)队列 (D)树4. 二叉树第i(i≥1)层最多有( )个结点。
(A) 2i (B)2i (C) 2i-1 (D) 2i-15. 设单链表中指针p指向结点A,若要删除A后结点(若存在),则需要修改指针的操作为( )(A) p->next = p->next->next (B)p=p->next(C)p=p->next->next (D)p->next=p6、栈和队列的共同特点是( )。
(A)只允许在端点处插入和删除元素 (B)都是先进后出(C)都是先进先出 (D)没有共同点7、二叉树的第k层的结点数最多为( ).(A)2k+1 (B)2K+1 (C)2K-1(D) 2k-18、设某棵二叉树的中序遍历序列为ABCD,前序遍历序列为CABD,则后序遍历该二叉树得到序列为()。
(A) BADC (B) BCDA (C) CDAB (D) CBDA9、设某完全无向图中有n个顶点,则该完全无向图中有()条边。
(A) n(n-1)/2 (B) n(n-1) (C) n2 (D) n2-110、下面程序的时间复杂为()for(i=1,s=0; i<=n; i++){t=1;for(j=1;j<=i;j++)t=t*j;s=s+t;}(A) O(n) (B) O(n2) (C) O(nlog2n) (D) O(n3)11、设某强连通图中有n个顶点,则该强连通图中至少有()条边。
(A) n(n-1) (B) n+1 (C) n (D) n(n+1)12、设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有()条有向边。
数据结构与算法分析习题与参考答案
大学《数据结构与算法分析》课程习题及参考答案模拟试卷一一、单选题(每题 2 分,共20分)1.以下数据结构中哪一个是线性结构?( )A. 有向图B. 队列C. 线索二叉树D. B树2.在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下( )语句序列。
A. p=q; p->next=q;B. p->next=q; q->next=p;C. p->next=q->next; p=q;D. q->next=p->next; p->next=q;3.以下哪一个不是队列的基本运算?()A. 在队列第i个元素之后插入一个元素B. 从队头删除一个元素C. 判断一个队列是否为空D.读取队头元素的值4.字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成( )个不同的字符串?A.14B.5C.6D.85.由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为( )。
以下6-8题基于图1。
6.该二叉树结点的前序遍历的序列为( )。
A.E、G、F、A、C、D、BB.E、A、G、C、F、B、DC.E、A、C、B、D、G、FD.E、G、A、C、D、F、B7.该二叉树结点的中序遍历的序列为( )。
A. A、B、C、D、E、G、FB. E、A、G、C、F、B、DC. E、A、C、B、D、G、FE.B、D、C、A、F、G、E8.该二叉树的按层遍历的序列为( )。
A.E、G、F、A、C、D、B B. E、A、C、B、D、G、FC. E、A、G、C、F、B、DD. E、G、A、C、D、F、B9.下面关于图的存储的叙述中正确的是( )。
A.用邻接表法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关B.用邻接表法存储图,占用的存储空间大小与图中边数和结点个数都有关C. 用邻接矩阵法存储图,占用的存储空间大小与图中结点个数和边数都有关D.用邻接矩阵法存储图,占用的存储空间大小只与图中边数有关,而与结点个数无关10.设有关键码序列(q,g,m,z,a,n,p,x,h),下面哪一个序列是从上述序列出发建堆的结果?( )A. a,g,h,m,n,p,q,x,zB. a,g,m,h,q,n,p,x,zC. g,m,q,a,n,p,x,h,zD. h,g,m,p,a,n,q,x,z二、填空题(每空1分,共26分)1.数据的物理结构被分为_________、________、__________和___________四种。
数据结构与算法设计-习题1-3
int
data;
struct Lnode *next;
// 数据域 // 指针域
} LNode, *LinkList; LinkList la, lb; // 单链表的头指针 请用 la 和 lb 中的结点合并生成一个新的非 递增的有序单链表 lc。合并完成后,原来的 la 和 lb 成为空链表。
作者 (时间 2000年) 北京理工大学计算机科学工程系 秦怀青 email qinhq010@
正确且高效的算法如下: Status DeleteK(SqList &a ,int i, int k) {//设线性表元素从a.base[1]起存储,从第i个元素起
删除k个元素。
if ( i<1|| k< 0 || (i+k)>a.length) return ERROR;
for ( j=i+k;j<=a.length; ++j)
操作步骤
1) 建空表 Lc; 2) 依次从 La 或 Lb 中“摘取”元素值较小的
结点插入到 Lc 表中第一个结点之前直至其 中一个表变空为止; 3) 继续将 La 或 Lb 其中一个表的剩余结点插 入在 Lc 表的表头结点之后; 4) 释放 La 表和 Lb 表的表头结点。
作者 (时间 2000年) 北京理工大学计算机科学工程系 秦怀青 email qinhq010@
单链表中逻辑上相邻的元素的物理位置 不一定 紧邻。
(3)在单链表中,除了头结点外,任一结点的存储位置 由 该结点的直接前趋 指示。
(4)在单链表中设置头结点的作用是
在表的第一个元素结点之前插入新元素结点或删除 第一个元素结点不需修改头作指者 针(时间 2000年)
计算机导论 第四章 算法与数据结构期末测试习题与答案
1、算法的时间复杂度是指()。
A.算法执行过程中所需要的基本运算次数B.执行算法程序所需要的时间C.算法程序的长度D.算法程序中的指令条数正确答案:A2、算法的空间复杂度是指()。
A.算法程序的长度B.算法程序所占的存储空间C.算法执行过程中所需要的存储空间D.算法程序中的指令条数正确答案:C3、线性表采用链式存储的优点是()。
A.花费的存储空间较顺序储存少B.数据元素的物理顺序与逻辑顺序相同C.便于随机存取D.便于插入和删除操作正确答案:D4、下列叙述中正确的是()。
A.二叉树是线性结构B.线性链表是非线性结构C.线性表是线性结构D.栈与队列是非线性结构5、数据结构中,与所使用的计算机无关的是数据的()。
A.逻辑结构B.物理结构C.物理和存储结构D.存储结构正确答案:A6、存储结构是指()。
A.逻辑结构在计算机中的表示B.数据所占的存储空间量C.存储在外存中的数据D.数据在计算机中的顺序存储方式正确答案:A7、下列关于队列的叙述中,正确的是()。
A.队列是先进后出B.队列是先进先出C.在队列中只能插入数据D.在队列中只能删除数据正确答案:B8、下列关于栈的叙述中,正确的是()。
A.栈只能采用顺序存储B.栈可以采用链式存储,采用链式存储时不会产生栈溢出现象。
C.在栈中只能删除数据D.在栈中只能插入数据9、对长度为n的线性表进行顺序查找,查找成功时,最坏情况下所需要的比较次数为()。
A.n/2B.(n+1)/2C.n+lD.n正确答案:D10、下列叙述中,正确的是()。
A.以上三种说法都不对B.算法就是程序C.设计算法时只需要考虑结果的可靠性D.设计算法时只需要考虑数据结构的设计正确答案:A二、多选题1、如果进栈的顺序为e1,e2,e3,e4,则可能的出栈序列是()。
A.e3,e1,e4,e2B.e4,e3,e2,e1C.e1,e2,e3,e4D.e2,e4,e3,e1正确答案:B、C、D2、已知二叉树后序编历序列是dabec,中续遍历序列是debac,不是其前序编历序列是()。
《数据结构与算法》第六章-树与二叉树习题
《数据结构与算法》第二部分习题精选一、下面是有关二叉树的叙述,请判断正误()1. 若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。
()2.二叉树中每个结点的两棵子树的高度差等于1。
()3.二叉树中每个结点的两棵子树是有序的。
()4.二叉树中每个结点有两棵非空子树或有两棵空子树。
()5.二叉树中每个结点的关键字值大于其左非空子树(若存在的话)所有结点的关键字值,且小于其右非空子树(若存在的话)所有结点的关键字值。
()6.二叉树中所有结点个数是2k-1-1,其中k是树的深度。
()7.二叉树中所有结点,如果不存在非空左子树,则不存在非空右子树。
()8.对于一棵非空二叉树,它的根结点作为第一层,则它的第i层上最多能有2i—1个结点。
()9.用二叉链表法(link-rlink)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
(√)10. 具有12个结点的完全二叉树有5个度为2的结点。
二、填空1.由3个结点所构成的二叉树有种形态。
2. 一棵深度为6的满二叉树有个分支结点和个叶子。
3.一棵具有257个结点的完全二叉树,它的深度为。
4.设一棵完全二叉树有700个结点,则共有个叶子结点。
5. 设一棵完全二叉树具有1000个结点,则此完全二叉树有个叶子结点,有个度为2的结点,有个结点只有非空左子树,有个结点只有非空右子树。
6.一棵含有n个结点的k叉树,可能达到的最大深度为,最小深度为。
7. 二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。
因而二叉树的遍历次序有六种。
最常用的是三种:前序法(即按N L R次序),后序法(即按次序)和中序法(也称对称序法,即按L N R次序)。
这三种方法相互之间有关联。
若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是。
8.中序遍历的递归算法平均空间复杂度为。
9.用5个权值{3, 2, 4, 5, 1}构造的哈夫曼(Huffman)树的带权路径长度是。
《数据结构与算法》习题与答案
《数据结构与算法》习题与答案(解答仅供参考)一、名词解释:1. 数据结构:数据结构是计算机存储、组织数据的方式,它不仅包括数据的逻辑结构(如线性结构、树形结构、图状结构等),还包括物理结构(如顺序存储、链式存储等)。
它是算法设计与分析的基础,对程序的效率和功能实现有直接影响。
2. 栈:栈是一种特殊的线性表,其操作遵循“后进先出”(Last In First Out, LIFO)原则。
在栈中,允许进行的操作主要有两种:压栈(Push),将元素添加到栈顶;弹栈(Pop),将栈顶元素移除。
3. 队列:队列是一种先进先出(First In First Out, FIFO)的数据结构,允许在其一端插入元素(称为入队),而在另一端删除元素(称为出队)。
常见的实现方式有顺序队列和循环队列。
4. 二叉排序树(又称二叉查找树):二叉排序树是一种二叉树,其每个节点的左子树中的所有节点的值都小于该节点的值,而右子树中的所有节点的值都大于该节点的值。
这种特性使得能在O(log n)的时间复杂度内完成搜索、插入和删除操作。
5. 图:图是一种非线性数据结构,由顶点(Vertex)和边(Edge)组成,用于表示对象之间的多种关系。
根据边是否有方向,可分为有向图和无向图;根据是否存在环路,又可分为有环图和无环图。
二、填空题:1. 在一个长度为n的顺序表中,插入一个新元素平均需要移动______个元素。
答案:(n/2)2. 哈希表利用______函数来确定元素的存储位置,通过解决哈希冲突以达到快速查找的目的。
答案:哈希(Hash)3. ______是最小生成树的一种算法,采用贪心策略,每次都选择当前未加入生成树且连接两个未连通集合的最小权重边。
答案:Prim算法4. 在深度优先搜索(DFS)过程中,使用______数据结构来记录已经被访问过的顶点,防止重复访问。
答案:栈或标记数组5. 快速排序算法在最坏情况下的时间复杂度为______。
数据结构与算法经典例题
1、在二叉搜索树(BST)中,以下哪个遍历顺序会按从小到大的顺序访问所有节点?A. 前序遍历B. 中序遍历C. 后序遍历D. 层次遍历(答案:B)2、对于一个给定的无向图,以下哪种算法最适合找到从起点到终点的最短路径(假设所有边的权重都相等)?A. Dijkstra算法B. Bellman-Ford算法C. Floyd-Warshall算法D. 广度优先搜索(BFS)(答案:D)3、在哈希表中处理冲突的一种方法是链地址法(也称为拉链法),以下关于链地址法的说法错误的是:A. 每个哈希表槽位连接一个链表B. 当发生冲突时,新元素添加到对应槽位的链表末尾C. 链地址法不需要处理哈希函数的设计,因为冲突总是通过链表解决D. 查找、插入和删除操作的时间复杂度与链表的长度有关(答案:C)4、以下哪种数据结构最适合实现优先队列,且支持高效的插入和删除最小(或最大)元素操作?A. 数组B. 链表C. 二叉堆D. 平衡二叉搜索树(如AVL树)(答案:C)5、在快速排序算法中,选择哪个元素作为基准(pivot)对算法的效率有重要影响,以下哪种策略通常不是一个好的选择?A. 数组的第一个元素B. 数组的最后一个元素C. 数组中间的元素D. 随机选择一个元素(答案:视具体情况而定,但通常A、B在特定情况下可能不是最佳,如当数组已近排序时;然而,此题要求选一个“通常不是好选择”的,若必须选一个,可以认为A或B在未知数据分布时风险较高,答案可倾向A或B,这里选A作为示例)6、以下哪个不是图的遍历算法?A. 深度优先搜索(DFS)B. 广度优先搜索(BFS)C. A*搜索算法D. 拓扑排序(答案:D)7、在平衡二叉搜索树(如红黑树)中,以下哪个操作的时间复杂度不是O(log n)?A. 查找B. 插入C. 删除D. 计算树中所有节点的和(答案:D,因为计算所有节点和需要遍历整个树,时间复杂度为O(n))8、以下哪种情况最适合使用动态规划算法来解决?A. 查找无序数组中的最大值B. 对一组数进行排序C. 计算斐波那契数列的第n项D. 在已排序的数组中查找特定元素(答案:C)。
《数据结构与算法》第四章-串习题
《数据结构与算法》第二部分习题精选一、填空题1. 称为空串;称为空白串。
2. 设S=“A;/document/Mary.doc”,则strlen(s)= , “/”的字符定位的位置为。
3. 子串的定位运算称为串的模式匹配,称为目标串,称为模式。
4. 设目标T=”abccdcdccbaa”,模式P=“cdcc”,则第次匹配成功。
5. 若n为主串长,m为子串长,则串的古典(朴素)匹配算法最坏的情况下需要比较字符的总次数为。
二、单选题()1. 串是一种特殊的线性表,其特殊性体现在:A.可以顺序存储B.数据元素是一个字符C.可以链式存储D.数据元素可以是多个字符()2.设有两个串p和q,求q在p中首次出现的位置的运算称作:A.连接B.模式匹配C.求子串D.求串长()3.设串s1=’ABCDEFG’,s2=’PQRST’,函数con(x,y)返回x和y 串的连接串,subs(s, i, j)返回串s的从序号i开始的j个字符组成的子串,len(s)返回串s的长度,则con(subs(s1, 2, len(s2)), subs(s1, len(s2), 2))的结果串是:A.BCDEF B.BCDEFG C.BCPQRST D.BCDEFEF三、计算题1.设s=’I AM A STUDENT’, t=’GOOD’, q=’WORKER’, 求Replac e(s,’STUDENT’,q)和Concat(SubString(s,6,2), Concat(t,SubString(s,7,8)))。
2.已知主串3.s=’ADBADABBAABADABBADADA’,模式串pat=’ADABBADADA’。
写出模式串的nextval函数值,并由此画出KMP算法匹配的全过程。
答案一、填空题1. 不包含任何字符(长度为0)的串由一个或多个空格(仅由空格符)组成的串2. 20 33.被匹配的主串子串4. 65. (n-m+1)*m二、单选题1. B2. B3. D四、计算题解:①Replace(s,’STUDENT’,q)=’I AM A WORKER’②因为SubString(s,6,2)=‘A ’;SubString(s,7,8)=‘STUDENT’Concat(t,SubString(s,7,8))=’GOOD STUDENT’所以Concat(SubString(s,6,2), Concat(t,SubString(s,7,8)))=‘A GOOD STUDENT’2. 解:(由演示程序得知)nextval函数值为0 1 0 2 1 0 1 0 4 0 在第12个字符处发现匹配!s=’ADBADABBAABADABBADADA’pat=’ADABBADADA’。
数据结构与算法练习题库(含答案)
数据结构与算法练习题库(含答案)一、单选题(共80题,每题1分,共80分)1、对一棵二叉树的结点从 1 开始顺序编号。
要求每个结点的编号大于其左子树所有结点的编号、但小于右子树中所有结点的编号。
可采用▁▁▁▁▁ 实现编号。
A、中序遍历B、先序遍历C、层次遍历D、后序遍历正确答案:A2、设一段文本中包含4个对象{a,b,c,d},其出现次数相应为{4,2,5,1},则该段文本的哈夫曼编码比采用等长方式的编码节省了多少位数?A、5B、4C、2D、0正确答案:C3、两个有相同键值的元素具有不同的散列地址A、一定不会B、一定会C、可能会D、有万分之一的可能会正确答案:C4、将元素序列{18,23,11,20,2,7,27,33,42,15}按顺序插入一个初始为空的、大小为11的散列表中。
散列函数为:H(Key)=Key%11,采用线性探测法处理冲突。
问:当第一次发现有冲突时,散列表的装填因子大约是多少?A、0.73B、0.27C、0.64D、0.45正确答案:D5、对N个记录进行归并排序,归并趟数的数量级是:A、O(NlogN)B、O(logN)C、O(N)D、O(N2)正确答案:B6、下列说法不正确的是:A、图的遍历是从给定的源点出发每一个顶点仅被访问一次B、图的深度遍历不适用于有向图C、遍历的基本算法有两种:深度遍历和广度遍历D、图的深度遍历是一个递归过程正确答案:B7、二叉树的中序遍历也可以循环地完成。
给定循环中堆栈的操作序列如下(其中push为入栈,pop为出栈): push(1), push(2), push(3), pop(), push(4), pop(), pop(), push(5), pop(), pop(), push(6), pop()A、6是根结点B、2是4的父结点C、2和6是兄弟结点D、以上全不对正确答案:C8、设最小堆(小根堆)的层序遍历结果为{1, 3, 2, 5, 4, 7, 6}。
数据结构与算法练习题附答案
1、下面关于算法的说法错误的是()A、算法最终必须由计算机程序实现B、为解决某问题的算法同为该问题编写的程序含义是相同的C、算法的可行性是指指令不能有二义性D、以上几个都是错误的参考答案:D2、数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称为()A、存储结构B、逻辑结构C、链式存储结构D、顺序存储结构参考答案:C3、以下说法正确的是()(2分)A、数据元素是数据的最小单位B、数据项是数据的基本单位C、数据结构是带有结构的各数据项的集合D、数据结构是带有结构的数据元素的集合参考答案:D4、通常从正确性、易读性、健壮性、高效性等四个方面评价算法(包括程序)的质量。
以下解释错误的是()A、正确性算法应能正确地实现预定的功能(即处理要求)B、易读性算法应易于理解和阅读,以便于调试、修改和扩充C、健壮性当环境发生变化时,算法能适当地做出反应或进行处理,不会产生不需要的运行结果D、高效性即达到所需要的时间性能参考答案:C5、树形结构是数据元素之间存在一种()A、一对一关系B、多对多关系C、多对一关系D、一对多关系参考答案:D6、数据结构是指()A、数据元素的组织形式B、数据类型C、数据存储结构D、数据定义参考答案:A7、算法分析的目的是()A、找出数据结构的合理性3、研究算法中的输入和输出关系C、分析算法的效率以求改进D、分析算法的易懂性和文档性参考答案:C8、数据在计算机内有链式和顺序两种存储方式,在存储空间使用的灵活性上,链式存储比顺序存储要()A、低B、高C、相同D、以上都不正确参考答案:B9、算法的空间复杂度是指()A、执行算法程序所占的存储空间B、算法程序中的指令条数C、算法程序的长度D、算法执行过程中所需要的存储空间参考答案:D10、数据的存储结构是指()A、数据所占的存储空间量B、数据的逻辑结构在计算机中的表示C、数据在计算机中的顺序存储方式D、存数在外存中的数据参考答案:B11、线性表是()A、一个有限序列,可以为空B、一个有限序列,不能为空C、一个无限序列,可以为空D、一个无限序列,不能为空参考答案:A12、下列叙述正确的是()A、线性表是线性结构B、栈和队列是非线性结构C、线性链表是非线性结构D、二叉树是线性结构参考答案:A13、计算机内部数据处理的基本单位是()A、数据B、数据元素C、数据项D、数据库参考答案:B14、从逻辑上可以把数据结构分为()两大类A、动态结构、静态结构B、顺序结构、链式结构C、线性结构、非线性结构D、初等结构、构造型结构参考答案:C15、算法的时间复杂度取决于()A、问题的规模B、待处理数据的初态C、A 和B参考答案:C16、以下属于逻辑结构的是()(2分)A、顺序表B、哈希表C、有序表D、单链表参考答案:C17、下列数据结构中,()是非线性数据结构A、树B、字符串C、队D、栈参考答案:A18、设语句x++的时间是单位时间,则以下语句的时间复杂度为()for(i=1;i<=n;i++)for(j=|;j<=n;j++)x++;(2分)A、O(1)B、O(n2)C、O(n)D、O(n3)参考答案:B19、算法的计算量大小称为计算的()(2分)A、效率B、复杂性C、现实性D、难度参考答案:B20、数据结构只是研究数据的逻辑结构和物理结构,这种观点()A、正确B、错误C、前半句正确,后半句错误D、前半句错误,后半句正确参考答案:B21、计算机算法指的是(),它具有输入、输出、可行性、确定性和有穷性等五个特性。
《数据结构与算法》第十章-排序习题
《数据结构与算法》第二部分习题精选一、填空题1. 大多数排序算法都有两个基本的操作:和。
2. 在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第7个记录60插入到有序表时,为寻找插入位置至少需比较次。
(可约定为从后向前比较)3. 在插入和选择排序中,若初始数据基本正序,则选用;若初始数据基本反序,则选用。
4. 在堆排序和快速排序中,若初始记录接近正序或反序,则选用;若初始记录基本无序,则最好选用。
5. 对于n个记录的集合进行冒泡排序,在最坏的情况下所需要的时间是。
若对其进行快速排序,在最坏的情况下所需要的时间是。
6. 对于n个记录的集合进行归并排序,所需要的平均时间是,所需要的附加空间是。
7.对于n个记录的表进行2路归并排序,整个归并排序需进行趟(遍),共计移动次记录。
二、单项选择题()1.将5个不同的数据进行排序,至多需要比较次。
A. 8 B. 9 C. 10 D. 25()2.排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为A. 希尔排序B. 冒泡排序C. 插入排序D. 选择排序()3.排序方法中,从未排序序列中挑选元素,并将其依次插入已排序序列(初始时为空)的一端的方法,称为A. 希尔排序B. 归并排序C. 插入排序D. 选择排序()4.对n个不同的排序码进行冒泡排序,在下列哪种情况下比较的次数最多。
A. 从小到大排列好的B. 从大到小排列好的C. 元素无序D. 元素基本有序()5.对n个不同的排序码进行冒泡排序,在元素无序的情况下比较的次数为A. n+1 B. n C. n-1 D. n(n-1)/2 ()6.快速排序在下列哪种情况下最易发挥其长处。
A. 被排序的数据中含有多个相同排序码B. 被排序的数据已基本有序C. 被排序的数据完全无序D. 被排序的数据中的最大值和最小值相差悬殊()7.对有n个记录的表作快速排序,在最坏情况下,算法的时间复杂度是A.O(n) B.O(n2) C.O(nlog2n) D.O(n3)()8.若一组记录的排序码为(46, 79, 56, 38, 40, 84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为A. 38, 40, 46, 56, 79, 84 B. 40,38, 46 , 79, 56, 84C. 40, 38,46, 56, 79, 84 D. 40, 38,46, 84, 56, 79()9.在最好情况下,下列排序算法中排序算法所需比较关键字次数最少。
数据结构与算法 作业
习 题 11. 简述下列术语:数据 数据元素 数据结构 存储结构 数据类型 抽象数据类型2.在下面两列中,左侧是算法的执行时间,右侧是一些时间复杂度。
请用连线的方式表示每个算法的时间复杂度。
100n 3 (1) (a) O (1) 6n 2-12n +1 (2) (b) O (2n ) 1024 (3) (c) O (n ) n +2log 2n (4) (d) O (n 2) n (n +1)(n +2)/6 (5) (e) O (log 2n ) 2n +1+100n (6)(f) O (n 3)3. 试编写算法,求一元多项式P n (x )=∑=ni ii xa 0的值P n (x 0),并确定算法中每一语句的执行次数和整个算法的时间复杂度。
注意选择你认为较好的输入和输出方法,本题输入为a i (i=0,1,…,n ),x 0和n ,输出为P n (x 0)。
习 题 21. 填空题:a) 在顺序表中插入和删除一个元素,需要平均移动 表中一半 元素,具体移动的元素个数与 插入或删除元素的位置 有关。
b) 顺序表中逻辑上相邻的元素的物理位置 要求 紧邻。
单链表中逻辑上相邻的元素的物理位置 不要求 紧邻。
c) 在单链表中,除了首结点外,任一结点的存储位置由 前一结点的指针 指示。
d) 在单链表中设置头结点的作用是 储存指向第一个结点的指针 。
2. 已知顺序线性表A 和B 中各存放一个英语单词,字母均为小写。
试编写一个判定那个单词在字典中排在前面的算法。
3.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,…, a n)逆置为(a n,a n-1,…,a1)。
4.已知指针ha和hb分别指向两个单链表的头结点,并且已知两个链表的长度分别为m 和n。
试写一算法将这两个链表连接在一起(即令其中一个表的首元结点连在另一个表的最后一个结点之后),假设指针hc指向连接后的链表的头结点,并要求算法以尽可能短的时间完成连接运算。
数据结构与算法习题含参考答案
数据结构与算法习题含参考答案一、单选题(共100题,每题1分,共100分)1、要为 Word 2010 格式的论文添加索引,如果索引项已经以表格形式保存在另一个 Word文档中,最快捷的操作方法是:A、在 Word 格式论文中,逐一标记索引项,然后插入索引B、直接将以表格形式保存在另一个 Word 文档中的索引项复制到 Word 格式论文中C、在 Word 格式论文中,使用自动插入索引功能,从另外保存 Word 索引项的文件中插D、在 Word 格式论文中,使用自动标记功能批量标记索引项,然后插入索引正确答案:D2、下面不属于计算机软件构成要素的是A、文档B、程序C、数据D、开发方法正确答案:D3、JAVA 属于:A、操作系统B、办公软件C、数据库系统D、计算机语言正确答案:D4、在 PowerPoint 演示文稿中,不可以使用的对象是:A、图片B、超链接C、视频D、书签第 6 组正确答案:D5、下列叙述中正确的是A、软件过程是软件开发过程和软件维护过程B、软件过程是软件开发过程C、软件过程是把输入转化为输出的一组彼此相关的资源和活动D、软件过程是软件维护过程正确答案:C6、在 Word 中,不能作为文本转换为表格的分隔符的是:A、@B、制表符C、段落标记D、##正确答案:D7、某企业为了建设一个可供客户在互联网上浏览的网站,需要申请一个:A、密码B、门牌号C、域名D、邮编正确答案:C8、面向对象方法中,将数据和操作置于对象的统一体中的实现方式是A、隐藏第 42 组B、抽象C、结合D、封装正确答案:D9、下面属于整数类 I 实例的是A、-919B、0.919C、919E+3D、919D-2正确答案:A10、定义课程的关系模式如下:Course (C#, Cn, Cr,prC1#, prC2#)(其属性分别为课程号、课程名、学分、先修课程号 1和先修课程号 2),并且不同课程可以同名,则该关系最高是A、BCNFB、2NFC、1NFD、3NF正确答案:A11、循环队列的存储空间为 Q(1:100),初始状态为 front=rear=100。
《数据结构与算法》(张晓莉)习题
第一章绪论1. 从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构B.顺序结构、链式结构C.线性结构、非线性结构D.初等结构、构造型结构2. 在下面的程序段中,对x的赋值语句的频度为().For(k=1;k〈=n;k++)For(j=1;j〈=n;j++)x=x+1;A.O(2n) B.O(n)C.O(n2) D.O(log2n)3。
采用顺序存储结构表示数据时,相邻的数据元素的存储地址( ).A.一定连续B.一定不连续C.不一定连续D.部分连续、部分不连续4. 下面关于算法的说法,正确的是().A.算法的时间复杂度一般与算法的空间复杂度成正比B.解决某问题的算法可能有多种,但肯定采用相同的数据结构C.算法的可行性是指算法的指令不能有二义性D.同一个算法,实现语言的级别越高,执行效率就越低5。
在发生非法操作时,算法能够作出适当处理的特性称为().A.正确性B.健壮性C.可读性D.可移植性第二章线性表1. 线性表是()。
A.一个有限序列,可以为空B.一个有限序列,不能为空C.一个无限序列,可以为空D.一个无限序列,不能为空2.对顺序存储的线性表,设其长度为n,在任何位置上插入或删除操作都是等概率的。
插入一个元素时平均要移动表中的()个元素。
A.n/2 B.(n+1)/2 C.(n-1)/2 D.n3.线性表采用链式存储时,其地址()。
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.在单链表指针为p的结点之后插入指针为s结点,正确的操作是()。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据结构与算法的习题一、单项选择题:(本大题共20小题,每题 2 分,共30 分)(说明:将答案写在试卷后面的答题纸上)分数评卷人1.计算机识别、存储和加工处理的对象被统称为( )A.数据B.数据元素C.数据结构D.数据类型2.在具有n个结点的有序单链表中插入一个新结点并使链表仍然有序的时间复杂度是( )A.O(1)B.O(n)C.O(nlogn)D.O(n2)3.队和栈的主要区别是( )A.逻辑结构不同B.存储结构不同C.所包含的运算个数不同D.限定插入和删除的位置不同4.链栈与顺序栈相比,比较明显的优点是( )A.插入操作更加方便B.删除操作更加方便C.不会出现下溢的情况D.不会出现上溢的情况5.下列说法中正确的是()A.二叉树中任何一个结点的度都为2B.二叉树的度为2C.任何一棵二叉树中至少有一个结点的度为2D.一棵二叉树的度可以小于26.在一非空二叉树的中序遍历序列中,根结点的右边()A.只有右子树上的所有结点B.只有右子树上的部分结点C.只有左子树上的所有结点D.只有左子树上的部分结点7.在一个具有N个顶点的无向完全图中,包含的边的总数是()A.N(N-1)/2B.N(N-1)C.N(N+1)D.N(N+1)/28.下面的程序在执行时,S语句共执行的()次。
i=1;while (i<=n){for(j=i;j<n;j++){S;}i=i+1;}A. n(n+1)/2B. n(n-1)/2C. n!D. 2n9.设二叉树有n个结点,则其深度为()A. n-1B. nC. 5log2n+1D. 不确定10.已知一棵二叉树结点的先根序列为ABDGCFK,中根序列为DGBAFCK,则结点的后根序列为()A. ACFKBDGB. GDBFKCAC. KCFAGDBD. ABCDFKG11.任何一个带权的无向连通图的最小生成树()A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在12.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,则它的前序遍历序列是()A. acbed B. decabC. deabcD. cedba13.设深度为k的二叉树上只有度为0和度为2的结点,则这类二叉树上所含结点总数量是(C)个A. k+1B. 2kC. 2k-1D. 2k+114.下面程序的时间复杂性是()For(i=1;i<=n;i++)For(j=1;j<=n;j++){a[i][j]=i*j;}A. O(2m)B. O(2n)C. O(m*n)D. O(m+n)15.含N个顶点的连通图中的任意一条简单路径,其长度不可能超过()A. 1B. N/2C. N-1D. N16. 下列说法正确的是(A)A.树的先根遍历序列与其对应的二叉树的先根遍历序列相同B.树的先根遍历序列与其对应的二叉树的后根遍历序列相同C.树的后根遍历序列与其对应的二叉树的先根遍历序列相同D.树的后根遍历序列与其对应的二叉树的后根遍历序列相同17.对于一个具有N个结点和E条边的无向图,若采用邻接表示,则表头向量的大小是(A)A. NB. N+1C. N-ED. N-118.判断一个有向图是否存在回路,除了可以利用拓扑排序方法,还可以利用()A.求关键路径的方法B.求最短路径的Dijkstra方法C.广度优先遍历方法D. 深度优先遍历方法19.一个队列的输入序列是1,2,3,4,则队列的输出序列是()A,4,3,2,1 B.1,2,3,4 C.1,4,3,2D.3,2,4,120.任何一个带权的无向连通图的最小生成树(B)A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在得分评卷人复查人一、二、填空题(本大题共10小题,每小题1分,共10分)请在每小题的空格中填上正确答案。
错填、不填均无分。
(1)在线性表中插入或删除一个元素,需要平均移动元素,具体移动的元素个数与有关。
(2)顺序表中逻辑上相邻的元素的物理位置紧邻,单链表中逻辑上相邻的元素物理位置紧邻。
(3)在单链表中,除了首元结点外,任意结点的存储位置由指示。
(4)记录的结构是数据在物理存储器上的存储方式。
(5)在非空队列中,头指针始终指向,而尾指针始终指向。
(6)N个顶点的连通图,至少有条边。
(7)对于一个长度为n的线性表,假设表中各结点的查找概率相同,则在查找成功的情况下,平均查找长度为,如果k不在表中,则需要进行次比较后才能确定查找失败。
(8)在二叉排序树中,其左子树中任何一个结点的关键字一定其右子树的各结点的关键字。
(9)已知无向图G的结点数为n,边数为e,其邻接表表示中的表结点数与表头结点数之和为。
(10)若二叉树的一个叶子是某子树的中序遍历序列中的第一个结点,则它必是孩子树的后序遍历序中的个结点。
(11)有m个叶子结点(又称外结点)的哈夫曼树,其结点总数是。
(12)如果一个图中有n条边,则此图的生成树含有条边,所以生成树是图的边数最少的连通图(13)由权值为1,2,3,4,5,6的六个叶子结点构成一棵哈夫曼树,则带权的路径的长度为。
(14)在顺序队列中,应该有队头和队尾两个指针来指示,队头指针和队尾指针的初值在队列的初始化时均应该设置为,当对队列进行插入和删除的操作后,如果头指针和尾指针相等时,队列为。
(15)树有三种常用的存储结构,即孩子链表法、孩子兄弟链表法和。
(16)无向图的邻接矩阵是的,并且主对角线上的元素的值为。
(17)在结点数目相同的二叉树中,的路径长度最短。
(18)栈和队列均可视为特殊的线性表,所不同的在于对这二种特殊线性表和运算的限定不一样。
16.当问题的规模n趋向无穷大时,算法执行时间T(n)的数量级被称为算法的____时间复杂度____。
17.下面程序段的时间复杂度为___________。
sum=1;for(i=0;sum<n;i++)sum+=1;18.已知链表结点定义如下:typedef struct node{char data[16];struct node *next;} LinkStrNode;如果每个字符占1个字节,指针占4个字节,则该链表的存储密度是___________。
19.使用一个100个元素的数组存储循环队列,如果采取少用一个元素空间的方法来区别循环队列的队空和队满,约定队头指针front等于队尾指针rear时表示队空。
若为front=8,rear=7,则队列中的元素个数为___________。
20.3个结点可以组成___________种不同树型的二叉树。
21.用5个权值{3, 2,4,5,1}构造的哈夫曼(Huffman)树的带权路径长度是___________。
22.若无向图G中有n个顶点m条边,采用邻接矩阵存储,则该矩阵中非0元素的个数为___________。
23.影响排序效率的两个因素是关键字的___________次数和记录的移动次数。
24.对任一m阶的B树,每个结点中最多包含___________个关键字。
25.在链表的结点中,数据元素所占的存储量和整个结点所占的存储量之比称作________。
26.已知链栈的结点结构为date next栈顶指针为top,则实现将指针p所指结点插入栈顶的语句依次为________和________。
27.空串的长度是________;空格串的长度是________。
28.在一棵度为3的树中,度为2的结点个数是1,度为0的结点个数是6,则度为3的结点个数是________。
得分评卷人复查人三、名词解释(本大题共4小题,每小题3分,共12分)(1)栈:。
(2)树:。
(3)森林:。
(4)满二叉树:。
(5)数据:。
(6)数据对象:。
(7)数据结构:。
(8)算法:得分评卷人复查人四、简答题(本大题共4小题,每小题5分,共20分)(1)简述算法的五个重要特性(2)算法设计的基本要求(3)试描述数据结构和抽象数据类型的概念与程序设计语言中数据类型概念的区别(4)简述二叉树的特点(5)已知一棵度为k的树中有1n个度为1的结点,2n个度为2的结点,。
k n个度为k的结点,问该树中有多少个叶子节点?(7)写出下列树的先根序列和后根序列AB DCE F G HI J K(8)已知如图所示的有向图,请给出该图的:(1)每个顶点的入/出度(2)邻接矩阵156243答案:得分评卷人复查人五、程序阅读题(本大题共4小题,每小题5分,共20分)(1)简述以下算法的功能:status A (linkedlist L){if (L&&L->next){Q=L;L=L->next;P=L;while(P->next) P=P->next;P->next=Q;Q->next=null;}return ok;}(2)写出下列程序段的输出结果(栈的元素类型SElemType为char)。
void main(){stack S;char x,y;initstack(S);x=’c’;y=’k’;Push(S,x); Push(S,’a’); Push(S,y);Pop(S,x); Push(S,’t’); Push(S,x);Pop(S,x); Push(S,’s’);while(!stackempty(S)){pop(S,y);printf(y) ;};printf(x);}(3)简述以下算法的功能(栈和队列的元素类型均为int)void algo3(Queue&Q){stack S;int d;initstack(S);while(!Queueempty(Q)){dequeue(Q,d);push(S,d);}while(!stackempty(S)){pop(S,d);enqueue(Q,d);}}(4)简述以下算法的功能(栈的元素类型SElemType为int)。
status algo2(stack S, int e){stack T;int d;initstack(T);while(! Stackempty(S)){pop(S,d);if(d!=e)push(T,d);}while(!Stackempty(T)){pop(T,d);push(S,d);}}(5)写出下列程序段的输出结果(队列中的元素类型qelemtype为char)void main( ){Queue Q;initqueue(Q);char x=’e’,y=’c’;enqueue(Q,’h’) ;enqueue(Q,’r’) ;enqueue(Q,y) ; dequeue(Q,x) ; enqueue(Q,x) ; dequeue(Q,x) ; enqueue(Q,’a’) ; while( !Queueempty(Q)){dequeue(Q,y) ;printf(y) ;}printf(x) ;}得分评卷人复查人五、编程应用题(本大题共5小题,第39、40、41小题每小题6分,第42、43小题每小题10分,共38分)(1)试写一个算法,自大至小依次输出顺序读入的三个整数X,Y和Z的值。