北京交通大学研究生2010-2011数据结构与算法题及答案
北京交通大学数据结构与算法期末测验考试参考答案
Status CreatList_L(LinkList &L, int n){
//正序输入n个元素的值,建立带表头结点的单链线性表L
L=(LinkList) malloc(sizeof(LNode));
if(!L) return ERROR;
L->next=NULL;
A.5 B.6 C.7 D.8
三、判断题(10分,每小题1分)
1.顺序存储方式的优点是存储密度大,且插入、删除运算效率高。()
2.数组不适合作任何二叉树的存储结构。()
3.广义表的取表尾运算,其结果通常是个表,但有时也可是个原子。()
4.在含有n个结点的树中,边数只能是n-1条。()
5.所谓一个排序算法是否稳定,是指该算法在各种情况下的效率是否相差不大。()
6.简单选择排序在最好情况下的时间复杂度为O(n)。()
7.在二叉排序树中插入一个新结点,总是插入到叶结点下面。()
8.采用线性探测处理冲突,当从哈希表中删除一个记录时,不应将该记录所在位置置空,因为这会影响以后的查找。()
9.有n个数存放在一维数组A[1..n]中,在进行顺序查找时,这n个数的排列有序或无序,其平均查找长度不同。()
A.i(i-1)/2+j-1B.i(i-1)/2+j
C.i(i+1)/2+j-1D.i(i+1)/2+j
7.由一个长度为11的有序表,按二分查找法对该表进行查找,在表内各元素等概率情况下,查找成功的平均查找长度是( )。
A.29/11 B. 31/11C. 33/11 D.35/11
8.AVL树是一种平衡的二叉排序树,树中任一结点的()。
【精选资料】北京交通大学数据结构与算法期末考试参考答案
北京交通大学考试试题(A卷)课程名称:数据结构与算法2011-2012学年第一学期出题教师:张勇(请考生注意:(1)本试卷共有六道大题,(2)答案一律写在答题纸上,(3)试卷不得带出考场)一、填空题(每空2分,共20分)1. 在顺序表中访问任意一个元素的时间复杂度均为,因此顺序表也称为的数据结构。
2.三维数组a[4][3][2](下标从0开始),假设a[0][0][0]的地址为50,数据以行序优先方式存储,每个元素的长度为2字节,则a[2][1][1]的地址是。
3. 直接插入排序用监视哨的作用是。
4. 已知广义表Ls=(a, (b, c), (d, e)), 运用head和tail函数取出Ls中的原子d的运算是。
5.对有14个元素的有序表A[1..14]进行折半查找,当比较到A[4]时算法结束。
被比较元素除A[4]外,还有。
6. 在AOV网中,顶点表示,边表示。
7. 有向图G可进行拓扑排序的判别条件是。
8. 若串S1=‘ABCDEFGHIJK’,S2=‘451223’,S3=‘####’,则执行Substring(S1,Strlength(S3),Index(S2,‘12’,1))的结果是。
二、选择题(每空2分,共20分)1.在下列存储形式中,哪一个不是树的存储形式?()A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法2.查找n个元素的有序表时,最有效的查找方法是()。
A.顺序查找B.分块查找C.折半查找D.二叉查找3.将所示的s所指结点加到p所指结点之后,其语句应为()。
p(A) s->next=p+1 ; p->next=s;(B) (*p).next=s; (*s).next=(*p).next; (C) s->next=p->next ; p->next=s->next; (D) s->next=p->next ; p->next=s;4.在有向图的邻接表存储结构中,顶点v 在链表中出现的次数是( )。
数据结构与算法期末考试题及答案
数据结构与算法期末考试题及答案一、选择题1. 用于分离由加权无向边组成的完全连通图中连通分量中不相邻顶点的单纯形算法是(C)A. 最小生成树算法B. 广度优先搜索算法C. 最大流算法D. 关键路径算法2. 要设计一个使用图来表示的行业里的公司的决策问题,图的顶点应该表示(B)A. 公司拥有的资源B. 公司所面对的决策选择C. 公司内部的组织结构D. 公司的竞争对手3. 算法的计算时间复杂度O(log2n)中的n表示(A)A. 求解问题规模B. 求解算法所处理的数据量C. 求解问题中所涉及的参数量D. 求解算法所进行的求解步骤4. 以树形结构存储的优先队列中元素出队的操作时间复杂度是(C)A. O(1)B. O(n)C. O(log2n)D. O(n2)5. 以下关于贝尔曼-福特算法的描述错误的是(A)A. 贝尔曼-福特算法是求图 G=(V,E)最小生成树的法B. 贝尔曼-福特算法克服了Prim算法因存储顶点增量重复而带来的内存浪费C. 求解过程中,要维护贝尔曼-福特树中任意两个顶点之间的最短距离D. 贝尔曼-福特算法可以解决单源最短路径问题二、简答题1. 请说明拓扑排序的概念,以及如何使用拓扑排序解决求解关键路径的问题。
拓扑排序是指对有向无环图进行排序,得到一个顶点的线性序列,使得对于图中的每条有向边(u,v),均有u在v之前。
拓扑排序可用于求解关键路径,首先对所有活动按照拓扑排序的方法进行排序,计算该活动的最早开始时间ESi和最晚开始时间LSi,若ESi=LSi,则此活动运行期间不能延迟,为关键活动;若ESi≠LSi,则此活动可以合理推迟,不为关键活动。
数据结构与算法设计课后习题及答案详解
数据结构与算法设计课后习题及答案详解1. 习题一:数组求和题目描述:给定一个整数数组,编写一个函数来计算它的所有元素之和。
解题思路:遍历数组,将每个元素累加到一个变量中,最后返回累加和。
代码实现:```pythondef sum_array(arr):result = 0for num in arr:result += numreturn result```2. 习题二:链表反转题目描述:给定一个单链表,反转它的节点顺序。
解题思路:采用三指针法,依次将当前节点的下一个节点指向上一个节点,然后更新三个指针的位置,直到链表反转完毕。
代码实现:```pythonclass ListNode:def __init__(self, val=0, next=None):self.val = valself.next = nextdef reverse_list(head):prev = Nonecurr = headwhile curr:next_node = curr.nextcurr.next = prevprev = currcurr = next_nodereturn prev```3. 习题三:二叉树的层序遍历题目描述:给定一个二叉树,返回其节点值的层序遍历结果。
解题思路:采用队列来实现层序遍历,先将根节点入队,然后循环出队并访问出队节点的值,同时将出队节点的左右子节点入队。
代码实现:```pythonclass TreeNode:def __init__(self, val=0, left=None, right=None): self.val = valself.left = leftself.right = rightdef level_order(root):if not root:return []result = []queue = [root]while queue:level = []for _ in range(len(queue)):node = queue.pop(0)level.append(node.val)if node.left:queue.append(node.left)queue.append(node.right)result.append(level)return result```4. 习题四:堆排序题目描述:给定一个无序数组,使用堆排序算法对其进行排序。
数据结构与算法分析习题与参考答案
大学《数据结构与算法分析》课程习题及参考答案模拟试卷一一、单选题(每题2分,共20分)1. 以下数据结构中哪一个是线性结构?()A. 有向图B.队列C. 线索二叉树D. B树2. 在一个单链表HL中,若要在当前由指针p指向的结点后面插入一个由q指向的结点,则执行如下()语句序列。
A. p=q; p_>n ext=q;B. p_>n ext=q; q_>n ext=p;C. p_>n ext=q _>n ext; p=q;D. q_>n ext=p->n ext; p_>n ext=q;3. 以下哪一个不是队列的基本运算?()A. 在队列第i个元素之后插入一个元素B. 从队头删除一个元素C.判断一个队列是否为空D. 读取队头元素的值4. 字符A、B、C依次进入一个栈,按出栈的先后顺序组成不同的字符串,至多可以组成()个不同的字符串?A. 14B.5C.6D.8由权值分别为3,8,6,2的叶子生成一棵哈夫曼树,它的带权路径长度为()5.A. 11B.35C. 19D. 536.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 '、AF、G E以下6-8题基于图1。
该二叉树结点的前序遍历的序列为该二叉树结点的中序遍历的序列为(8.该二叉树的按层遍历的序列为()9.下面关于图的存储的叙述中正确的是 ()。
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 , z D. h,g , m p , a , n , q , x , z二、填空题(每空1分,共26分)1.数据的物理结构被分为 、、 和四种。
《数据结构与算法》习题与答案
《数据结构与算法》习题与答案(解答仅供参考)一、名词解释: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. 快速排序算法在最坏情况下的时间复杂度为______。
(完整版)数据结构与算法第8章答案
第8 章排序技术课后习题讲解1. 填空题⑴排序的主要目的是为了以后对已排序的数据元素进行()。
【解答】查找【分析】对已排序的记录序列进行查找通常能提高查找效率。
⑵对n个元素进行起泡排序,在()情况下比较的次数最少,其比较次数为()。
在()情况下比较次数最多,其比较次数为()。
【解答】正序,n-1,反序,n(n-1)/2⑶对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行直接插入排序,当把第7个记录60插入到有序表时,为寻找插入位置需比较()次。
【解答】3【分析】当把第7个记录60插入到有序表时,该有序表中有2个记录大于60。
⑷对一组记录(54, 38, 96, 23, 15, 72, 60, 45, 83)进行快速排序,在递归调用中使用的栈所能达到的最大深度为()。
【解答】3⑸对n个待排序记录序列进行快速排序,所需要的最好时间是(),最坏时间是()。
【解答】O(nlog2n),O(n2)⑹利用简单选择排序对n个记录进行排序,最坏情况下,记录交换的次数为()。
【解答】n-1⑺如果要将序列(50,16,23,68,94,70,73)建成堆,只需把16与()交换。
【解答】50⑻对于键值序列(12,13,11,18,60,15,7,18,25,100),用筛选法建堆,必须从键值为()的结点开始。
【解答】60【分析】60是该键值序列对应的完全二叉树中最后一个分支结点。
2. 选择题⑴下述排序方法中,比较次数与待排序记录的初始状态无关的是()。
A插入排序和快速排序B归并排序和快速排序C选择排序和归并排序D插入排序和归并排序【解答】C【分析】选择排序在最好、最坏、平均情况下的时间性能均为O(n2),归并排序在最好、最坏、平均情况下的时间性能均为O(nlog2n)。
⑵下列序列中,()是执行第一趟快速排序的结果。
A [da,ax,eb,de,bb] ff [ha,gc]B [cd,eb,ax,da] ff [ha,gc,bb]C [gc,ax,eb,cd,bb] ff [da,ha]D [ax,bb,cd,da] ff [eb,gc,ha]【解答】A【分析】此题需要按字典序比较,前半区间中的所有元素都应小于ff,后半区间中的所有元素都应大于ff。
北京交通大学研究生2010-2011数据结构与算法题及答案
LNode* pNode=head->next; Lnode* pMaxNode=head->next;//最大节点指针 while(pNode!=NULL) {
if(pNode->data > pMaxNode->data) {
pMaxNode=pNode; } pNode=pNode->next; } //打印最大节点 if(pMaxNode==NULL) printf(“链表为空!”); else
2.对一个具有m个单元的循环队列,假定队头指针和队尾指针分别为
front和rear,则求此队中元素个数的计算公式为
。
3.假设以S和X分别表示进栈和出栈操作,对输入序列1,2,3,4, 为了得到
1342的出栈顺序,相应的S和X操作串为
。
4.若一个算法中的语句频度之和为T(n)=10n+20n2logn+60n3,则算法
是非对称矩阵。( ) 8. 顺序查找法适用于存储结构为顺序或链式存储的线性表。( ) 9. 一棵满二叉树同时又是一棵平衡树。( ) 10. 赫夫曼树的结点个数不能是偶数。( )
4、 应用题(34分)
1.请写出下图所示的二叉树的先序序列、中序序列和后序序列。(5 分)
2.给定下列图,完成以下问题 (8分) (1)画出该图的邻接矩阵和邻接表 (2)根据所画的邻接表,从顶点A出发,写出图的深度优先遍历结果 (3)根据克鲁斯卡尔算法,求它的最小生成树(不必写出全部过程, 在生成树中标出边生成的次序即可)
第1趟{28,12,20,8,2,10,16,6,35} 第2趟{20,12,16,8,2,10,6,28,35}
4. 所得的hash表为: 平均查找长度
数据结构10年考研试题及答案(整理)
数据结构考试重点及部分答案自己做的答案不是很正确如果有问题请联系后面的大题不知道原题,所以不知道怎么做见谅!!!题型和分值选择题:15*2=30填空题:10*2=20解答题:5*4=20算法阅读题:5*4=20算法设计题:101 栈的进栈、出栈函数顺序,求一个表达式的顺序eg:进栈顺序是123 计算POP(S)+2 POP(S) =3+2*2=72 给定二叉排序树的数据求平均查找长度Eg:已知长度为9的表{16 ,3 ,7 ,11 ,9 ,26,18,14,15},建立二叉顺序树后进行查找,则等概率的情况下查找成功的平均查找长度为()二叉排序树(Binary Sort Tree)又称二叉查找树。
它或者是一棵空树;或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于它的根结点的值;(3)左、右子树也分别为二叉排序树;根据上述性质,按照给出的表,建立的树如下图:(旁边的数表示查找长度)平均查找长度为:(1+2+2+3+3+4+5+5+6)/9 = 31/93树的概念树是n(n>=0)个结点的有限集4 二重循环的平均时间复杂度的求解(使用嵌套、统计次数)时间复杂度:该算法的运行时间与问题规模的对应关系,时间复杂度用T(n)=O(f(n))来表示Eg:S=0for(i=1;i<=n;i++)for(j=1;j<=m;j++)s=s+1答案为0(n*m)求解算法复杂度时:1、首先确定核心操作。
很显然此算法中,核心的操作是s=s+1;2.这个算法中,存在两重循环。
第一重循环n次,第二重循环m次,总共执行核心操作n*m次。
3.确定此算法的时间复杂度为:O (n*m)若复杂度为 O (n*n),则算法可以是如下的样子:S=0for(i=1;i<=n;i++)for(j=1;j<=n;j++)s=s+15 单链表中R是P的前驱,在P Q之间插入S,则则如何插入(语句表示)在相邻元素R、P之间插入一个值为X的数据元素的基本操作步骤:(1)生成一个数据域值为X的结点S(2)使X结点的指针域指向结点P:S->next=P->next(3)修改R结点的指针域指向结点X:P->next=S6 已知顺序表,求查找X的平均查找长度(n+1)/27栈的插入和删除的位置栈顶8 已知入队序列求出队序列原则:先进先出9 在图中,所有度数和等于边的几倍两倍10 邻接矩阵中行和列分别表示什么意思无向图邻接矩阵的第i行(或第i列)非零元素的个数正好是第i个顶点的度。
数据结构与算法 试题及答案
绪论一、填空题1、数据的逻辑结构是数据元素之间的逻辑关系,通常有下列4类:集合_、线性结构_、树型结构_、图状结构_。
2、数据的存储结构是数据在计算机存储器里的表示,主要有4种基本存储方法:顺序存储_、链式存储_、索引存储_、散列存储_。
二、选择题1、一个算法必须在执行有穷步之后结束,这是算法的(B )。
A、正确性B、有穷性C、确定性D、可行性2、算法的每一步必须有确切的定义,也就是说,对于每步需要执行的动作必须严格、清楚地给出规定,这是算法的(A)。
A、正确性B、有穷性C、确定性D、可行性3、算法原则上都是能够有机器或人所完成的。
整个算法好象是一个解决问题的“工作序列”,其中的每一步都是我们力所能及的一个动作,这是算法的(D)A、正确性B、有穷性C、确定性D、可行性三、简单题1、什么是数据结构?什么是算法?两者有什么关系?什么是数据结构?数据结构是按某种逻辑关系组织起来的一批数据(或称带结构的数据元素的集合)应用计算机语言并按一定的存储表示方式把它们存储在计算机的存储器中,并在其上定义了一个运算的集合。
什么是算法?广义地说,为解决一个问题而采取的方法和步骤,就称为“算法”两者有什么关系?算法与数据结构关系密切。
选择的数据结构是否恰当直接影响算法的效率;而数据结构的优劣由算法的执行来体现。
2、什么是复杂度和空间复杂度?时间复杂度是指执行算法所需要的计算工作量;而空间复杂度是指执行这个算法所需要的内存空间。
3、数据的逻辑结构分几种?存储结构又有哪几种?数据的逻辑结构:结构定义中的“关系”,描述的是数据元素之间的逻辑关系;包括线性结构(线性表、栈、队、串、数组)和非线性结构(图形结构、树形结构);数据的存储结构(物理结构):数据结构在计算机中的表示(又称映像),包括数据元素的表示和关系德表示。
有顺序存贮(向量存贮)、链式存贮、索引存贮、散列存贮。
线性表1、一个线性表第一个元素的存储地址是100,每个元素的长度为2,则第5 个元素的地址是( B)。
2010年硕士研究生入学考试“数据结构与C语言程序设计”试题与答案
13.C 语言规定,简单变量做实参时,它和对应的形参之间的数据传递方式是 A.单向值传递 B.地址传递 C.由实参传给形参,再由形参传回给实参 D.由用户指定传递方式 14.C 语言规定,函数返回值的类型是由 A.return 语句中的表达式的类型所决定 B.调用该函数时的主函数的类型所决定 。
3
C.调用该函数时系统临时决定 D.在定义该函数时所指定的函数的类型所决定 15.下面给出的 4 个定义语句中,与 int *p[5]; 等价的是 。 A.int p[5]; B.int *p; C.int *(p[5]); 16.若有以下定义和语句,则值为 1002 的表达式是 。 struct s{ int age; int num; }; static struct s a[3]={1001,20,1002,19,1003,21},*ptr; ptr=a; A.ptr++->num B.(ptr++)->age C.(*ptr).num D.(*++ptr).age 17.若要通过下面的程序段使得指针变量指向一个存储整型变量的动态存储单元,则程序段中的空 。 白处(横线上方)应该是 int *ptr; ptr= malloc(sizeof(int)); A.int B.int * C.(int *) D.(*int ) 。 18.下面关于宏的叙述中,错误的是 A.宏名无类型,其参数也无类型 B.宏定义不是 C 语句,不必在行的末尾加分号 C.宏替换只是字符替换 D.宏定义命令必须写在文件的开头 。 19.下列关于 C 语言文件操作的叙述中,正确的是 A.对文件的操作必须是先打开文件 B.对文件的操作必须是先关闭文件 C.对文件操作之前必须先测试文件是否已打开,然后再打开文件 D.对文件的操作无顺序要求 20.使用 fopen( )函数以文本方式打开或者建立可读写文件。要求:若指定文件不存在,则建立一 个文件,并使文件指针指向其开头;若指定文件存在,则打开该文件,并将文件指针指向其结尾。下列 。 “文件使用方式”中,正确的是 A.“r+” B.“ a+” C.“ w+” D.“a”
《数据结构》历年考研真题及解答
《数据结构》考研真题及解答目录2009 年试题 (1)填空题 (1)解答题 (2)2010 年试题 (2)填空题 (2)解答题 (4)2011 年试题 (4)填空题 (4)解答题 (5)2012 年试题 (6)填空题 (6)解答题 (7)2013 年试题 (8)填空题 (8)解答题 (9)2014 年试题 (10)填空题 (10)解答题 (11)2015 年试题 (12)填空题 (12)解答题 (14)2009 年试题填空题1.为解决计算机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该缓冲区的逻辑结构应该是A.栈B.队列C.树D.图2.设栈 S 和队列 Q 的初始状态均为空,元素 abcdefg 依次进入栈 S。
若每个元素出栈后立即进入队列 Q,且7 个元素出队的顺序是 bdcfeag,则栈 S 的容量至少是A.1 B.2 C.3 D.43.给定二叉树图所示。
设 N 代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。
若遍历后的结点序列为 3,1,7,5,6,2,4,则其遍历方式是A.LRN B.NRL C.RLN D.RNL4.下列二叉排序树中,满足平衡二叉树定义的是5.已知一棵完全二叉树的第 6 层(设根为第 1 层)有8 个叶结点,则完全二叉树的结点个数最多是A.39 B.52 C.111 D.1196.将森林转换为对应的二叉树,若在二叉树中,结点u 是结点v 的父结点的父结点,则在原来的森林中,u 和v 可能具有的关系是I.父子关系II.兄弟关系III.u 的父结点与v 的父结点是兄弟关系A.只有IIB.I 和IIC.I 和IIID.I、II 和III7.下列关于无向连通图特性的叙述中,正确的是I.所有顶点的度之和为偶数II.边数大于顶点个数减1 III.至少有一个顶点的度为1A.只有IB.只有IIC.I 和IID.I 和III8.下列叙述中,不符合 m 阶B 树定义要求的是A.根节点最多有m 棵子树 B.所有叶结点都在同一层上C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接9.已知关键序列 5,8,12,19,28,20,15,22 是小根堆(最小堆),插入关键字 3,调整后得到的小根堆是A.3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,1910.若数据元素序列 11,12,13,7,8,9,23,4,5 是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是A.起泡排序 B.插入排序 C.选择排序 D.二路归并排序解答题41.(10 分)带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间的一条最短路径。
(完整版)数据结构与算法第1章参考答案08
for(j=i+1;j<=n;j++)
if(R[j]>R[j+1])k=j;
t=R[k];R[k]=R[i];R[i]=t;
}
[解答]O(n2)
7.计算一元n次多项式P( x,n)=a0+alx+a2x2+..+anxn“的值,输人x,n,a0,al,…,an,输出多项式P(x,n)的值。设计算法求解,请选择合适的输人、输出格式,要求算法具有较好的时间性能。
习题参考答案
一.选择题
1.从逻辑上可以把数据结构分为(C)两大类。
A.动态结构、静态结构B.顺序结构、链式结构
C.线性结构、非线性结构D.初等结构、构造型结构
2.在下面的程序段中,对x的斌值语句的频度为(C)。
for( t=1;k<=n;k++)
for(j=1;j<=n; j++)
x=x十1;
A. O(2n)B.O(n)C.O(n2).D.O(1og2n)
D.同一个算法,实现语言的级别越高,执行效率就越低
5.在发生非法操作时,算法能够作出适当处理的特性称为(B)。
A.正确性B.健壮性C.可读性D.可移植性
二、判断题
1.数据的逻辑结构是指数据的各数据项之间的逻辑关系。(√)
2.顺序存储方式的优点是存储密度大,且插人、删除运算效率高。(×)
3.数据的逻辑结构说明数据元素之间的次序关系,它依赖于数据的存储结构。(×)
3.采用链式存储结构表示数据时,相邻的数据元素的存储地址(C)。
A.一定连续B.一定不连续
C.不一定连续D.部分连续,部分不连续
4.下面关于算法说法正确的是(D)。
A.算法的时间复杂度一般与算法的空间复杂度成正比
B.解决某问题的算法可能有多种,但肯定采用相同的数据结构
2010年硕士研究生入学考试数据结构与C语言程序设计(993)试题与答案
2.对于采用链式存储结构的队列,在进行删除操作时 。
A.只需修改队头指针
B.只需修改队尾指针
C.队头指针和队尾指针都需要修改
D.队头指针和队尾指针都可能需要修改
3.将中缀表达式转换为等价的后缀表达式的过程中要利用堆栈保存运算符。对于中缀表达式
A-(B+C/D)×E,当扫描读到操作数 E 时,堆栈中保存的运算符依次是 。
2010 年硕士研究生入学考试
数据结构与 C 语言程序设计(993) 试题与答案
一、单项选择题(本题共 20 分,每小题各 2 分)
1.已知双向循环链表的结点构造为 llink data rlink ,在链表中由指针 q 所指结点的后 面插入指针为 p 的结点的过程是依次执行 。
A.p->llink=q; p->rlink=q->rlink; q->rlink=p; q->llink=p; B.p->llink=q; p->rlink=q->rlink; q->rlink=p; q->rlink->llink=p; C.p->llink=q; p->rlink=q->rlink; q->rlink=p; p->rlink->llink=p; D.p->llink=q; p->rlink=q->rlink; q->rlink=p; p->llink->llink=p;
i=f(2); j=f(1+1); printf(“%d %d\n”,i,j); }
4.下列程序的运行结果是 。 #include <stdio.h> void main( ) { FILE *fp;
数据结构与算法习题含参考答案
数据结构与算法习题含参考答案一、单选题(共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. 数据的传输和存储正确答案:A2. 在数据结构中,栈(Stack)的特点是什么?A. 先进先出B. 先进后出C. 后进先出D. 后进后出正确答案:C3. 在链表中,结点的指针指向的是什么?A. 结点本身B. 结点的前一个结点C. 结点的后一个结点D. 结点的数据域正确答案:C4. 在二叉搜索树中,左子树的值都小于根节点,右子树的值都大于根节点。
这种特性被称为什么性质?A. 有序性B. 平衡性C. 完全性D. 二叉性正确答案:A二、填空题1. 算法的复杂度可以分为时间复杂度和________复杂度。
正确答案:空间2. 实现队列数据结构可以采用两个栈的方式,称为______队列。
正确答案:双栈3. 快速排序算法的时间复杂度为______。
正确答案:O(nlogn)三、编程题1. 请编写一个函数,实现对一个数组进行冒泡排序。
正确答案:```pythondef bubble_sort(arr):for i in range(len(arr) - 1):for j in range(len(arr) - 1 - i):if arr[j] > arr[j + 1]:arr[j], arr[j + 1] = arr[j + 1], arr[j]return arr```2. 请编写一个递归函数,计算斐波那契数列的第n项。
正确答案:```pythondef fibonacci(n):if n <= 1:return nelse:return fibonacci(n - 1) + fibonacci(n - 2)```四、简答题1. 请简单描述树和图的区别。
答:树是一种特殊的图,它是一个由节点和边组成的非线性数据结构,具有层级关系,且任意两个节点之间有且仅有一条路径相连。
2011年数据结构(B)参考答案
2011年数据结构(B)参考答案一、填空题1. (n+1)/22. O(n) O(1)3. 邻接多重表4. n-i+15. 每当一趟匹配过程中出现字符比较不相等时,不需回溯i指针,而是利用已经得到的“部分匹配”的结果将模式向右“滑动”尽可能远的一段距离后,继续进行比较6.abcedf g7. O(n+e)8. 关键字有序或基本有序9. 0111232二、选择题1.C2.B3.A4.C5.B6.B7.A8.C9.C 10.A三、判断题1.✕2.✓3.✕4.✕5.✕6.✓7.✓8.✕9.✓10.✕四、应用题1. 先序:ABDEFCGHK中序:DBFEAGCKH后序:DFEBGKHCA2. (1) 邻接矩阵:⎥⎥⎥⎥⎥⎥⎥⎥⎥⎦⎤⎢⎢⎢⎢⎢⎢⎢⎢⎢⎣⎡∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞∞15313514632143456245V V V V V V V 6543210 邻接表:0123456(2) V 0→V 1→V 4→V 2→V 6→V 3→V 5(答案不唯一,但须与(1)中的邻接表相匹配) (3)其中权值为4的两条边(虚线)任选其一,边的生成次序按照其权值从小到大排列即可3. (1)12、25、7、15、34、47、65、47+、16、79(2)12、34、7、25、15、47、65、79、16、47+(3)7、12、25、34、15、47、65、79、47+、16(4)○112、34、25、7、15、47、65、79、47+、16○27、15、25、12、34、47、16、79、47+、65○37、12、15、16、25、34、47、47+、65、79(5)初始堆:79、47+、65、34、16、47、25、7、12、15第一趟排序后:65、47+、47、34、16、15、25、7、12、79 (二叉树表示方法也可)4. 哈希表为:0 1 2 3 4 5 6平均查找长度ASL=(2+3+2+1+2+1)/6=11/65. 二叉排序树为:45114981326314平均查找长度ASL=(1+2X2+3X2+4X2+5)/8=3五、算法设计题1. #define ERROR -1int FindMin(LinkList L){ // 带头结点的单链表int min;LinkList p=L->next;if(!p) return ERROR;else{min=p->data;p=p->next;while(p){if(min>p->data)min=p->data;p=p->next;}}printf(“最小值为%d\n”, min);return min;}2. void Odd_Even_Sort(int A[], int n){int temp;bool flag = false;while (!flag){flag = true;for (int i = 1; i < n - 1; i = i + 2) //奇数排序{if (A[i] > A[i + 1]){temp = A[i]; A[i] = A[i + 1]; A[i + 1] = temp;flag = false;}}for (int i = 0; i < n - 1; i = i + 2) //偶数排序{if (A[i] > A[i + 1]){temp = A[i]; A[i] = A[i + 1]; A[i + 1] = temp;flag = false;}}}}3. int Hight_BiTree(BiTree T){int h, h1, h2;if(!T) return 0;h1 = Hight_BiTree(T->lchild);h2 = Hight_BiTree(T->rchild);h= (h1>h2)?h1:h2) + 1;return (h);}。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.设有一个由正整数组成的无序单链表L(带头结点),编写完成下列功 能的算法 (1)求单链表的长度(4分) (2)找出最大值结点,且打印该数值;(4分)
单链表L采用如下的存储结构: typedef struct LNode {
unsigned int data; struct LNode *next; }LNode, *LinkList;
if(root==NULL) //为空节点 return 0;
if(root->lchild==NULL && root->rchild==NULL)//为叶子节点
return 1; return GetLeafNum(root->lchild)+GetLeafNum(root->rchild);//递归调用
printf(“最大节点为:%d”, pMaxNode->data); return pMaxNode;//返回最大节点的指针
调用方式为:LNode* pMaxNode=GetMaxNode(T);
2. 递归算法: int GetLeafNum(BiTree root) //获取二叉树中叶子节点的个数
2.对一个具有m个单元的循环队列,假定队头指针和队尾指针分别为
front和rear,则求此队中元素个数的计算公式为
。
3.假设以S和X分别表示进栈和出栈操作,对输入序列1,2,3,4, 为了得到
1342的出栈顺序,相应的S和X操作串为
。
4.若一个算法中的语句频度之和为T(n)=10n+20n2logn+60n3,则算法
5、已知序列{12,11,13,49,26,14,8,7}, 以该序列为输入序 列,建立排序二叉树,并计算等概率条件下查找成功的平均查找长度。 (5分)
五、算法设计题(16分)
算法书写要求:应简单阐述算法的主要思想,对关键变量和关键语句 进行注释;如果为递归算法,则应说明递归调用的初始条件。写出正 确的设计思想和伪代码可以酌情给分。
北京交通大学考试试题
课程名称: 数据结构与算法 2010-2011学年第二学期 勇
出题教师:张
(请考生注意:(1)本试卷共有五道大题,(2)答案一律写在答题纸 上,(3)试卷不得带出考场)
题号 一 二 三 四 五 总分
得分
阅卷 人
1、 填空题(每空2分,共20分)
1.数据的逻辑结构分为两大类,它们是_____________ _和 _______________。
A.栈
B. 队列
C.图
D. 树
9. 栈和队列的共同点是 。
A. 都是先进后出
B. 都是后进先出
C. 只允许在端点处插入和删除元素
D. 没有共同点
10.下图所示的拓扑排列的结果序列为
A.125634
B. 516234
C.123456
D. 521634
3、 判断题(10分,每小题1分)
1. 如果某排序算法是不稳定的,则该方法仍有实际应用价值。 ()
2. 双向循环链表中,任一结点的前驱指针均为不空。( ) 3. 二叉排序树的左右子树都是二叉排序树。( ) 4. 希尔排序是一种不稳定的排序方法。( ) 5. 单链表从任一结点出发,都可以访问到所有结点。( ) 6. 树的度是指根节点的最大子树数。( ) 7. 无向图的邻接矩阵一定是对称矩阵,且有向图的邻接矩阵一定
3. 将序列{12,2,16,35,28,10,20,6,8}中的关键字按升序重新 排列,请写出(8分) (1)冒泡排序一趟扫描的结果 (2)二路归并排序一趟排序的结果 (3)以第一个元素为分界点的快速排序一趟扫描的结果 (4)堆排序前两趟的排序结果
4.表长度为11,存储地址为a[0] 至 a[10], 哈希函数为H(key)=key MOD 11,使用线性探测法解决冲突,请画出对于给定的如下一组关键字 {12,51,8,22,26,80,11,16}所得到的哈希表,并计算等概率条 件下查找成功的平均查找长度。(8分)
2、 选择题(每小题2分,共20分)
1.用邻接表存储图所需的存储空间大小____________
A.只与图的顶点数有关
B. 只与图的边数有关
C.与图的顶点数和边数都有关
D. 只与图是有向图还是无向图有
关
2.时间复杂度为O()的稳定排序法是 A.直接插入 B. 快速排序 C. 归并排序
D. 堆排序
3.链表不具有的特点是 (A) 可随机访问任一元素。 (B) 插入和 所需存储空间与线性表长度成正比
A.左、右子树的高度均相同
B.左、右子树高度差的绝对值
不超过1
C.左子树的高度均大于右子树的高度 D.左子树的高度均小于右子树
的高度
7.若在查找的同时对表进行增、删工作,这种查找称为 。
A.内部查找
B. 外部查找
C. 静态查找
D. 动态查找
8. 用邻接表表示图进行广度优先遍历时,通常采用 来实现算法
有不同的序列) (3) 克鲁斯卡尔算法: 生成边的次序在各边上以圆圈数字表示。
3. (1) 冒泡排序一趟结果:{2,12,16,28,10,20,6,8,35} (2) 二路归并排序一趟的结果:{2,12,16,35,10,28,6,20,8} (3) 快速排序一趟扫描的结果:{8,2,6,10,12,28,20,35,16} (4) 堆排序前两趟的排序结果:
二.选择替 1-5:CCAAA 5-10:BDBCB
三.判断题 1-5:√√√√× 6-10:××√√√
四.应用题 1. 先序序列:ABDECFHG
中序序列:DBEAFCGH 后序序列:DEBFGHCA
2. (1) 邻接矩阵为:
邻接表为: (2) 深度优先遍历结果为:ABGFDEC (注:当邻接表排列方式不同时,后
2、编写递归算法,统计并返回以T为根指针的二叉树中的叶子结点个数 (8分)
二叉树T采用如下定义的存储结构: typedef struct BiTNode {
TElemType data; struct BiTNode *lchild, *rchild; }BiTNode, *BiTree;
一.填空题 1. 线性结构 非线性结构 2. (rear-front+m)%m 3. SXSSXSXX 4. O(n3) 5. 6. 两个串长度相等,且各个对应位置的字符都相等 7. 8. 每当一趟匹配过程中出现字符比较不相等时,不需回溯i指针,而是 利用已得到的“部分匹配”的结果将模式向右“滑动”尽可能远的一 端距离后继续比较 9. 69
第1趟{28,12,20,8,2,10,16,6,35} 第2趟{20,12,16,8,2,10,6,28,35}
4. 所得的hash表为: 平均查找长度
5. 所得的排序二叉树为: 平均查找长度
五.算法设计题 1. (1) 求链表长度为: int GetListLen(LinkList head)//获取链表长度
LNode* pNode=head->next; int len=0; while(pNode!=NULL)//遍历到链表末尾 {
len++;
pNode=pNode->next; } return len; //返回长度值
调用方式为:int lenth=GetListLen(L);
(2) 求最大节点,并打印 LNode* GetMaxNode(LinkList head) //获取链表的最大节点,同时打印最
的时间复杂度为
。
5.对n个记录进行2路归并排序,一共需要进行
趟归并。
6.串相等的条件是
。
7.在等概率的情况下,在长度为n的顺序表中进行顺序查找的平均查找 长度为_ ___。
8.KMP算法比经典的模式匹配算法的改进之处在于 。
9. 如某二叉树有20 个叶子结点,度为1的结点有30个,则该二叉树的 总结点数为__________________。
大节点
LNode* pNode=head->next; Lnode* pMaxNode=head->next;//最大节点指针 while(pNode!=NULL) {
if(pNode->data > pMaxNode->data) {
pMaxNode=pNode; } pNode=pNode->next; } //打印最大节点 if(pMaxNode==NULL) printf(“链表为空!”); else
4. 一个图中包含有k个连通分量,若按深度优先(DFS)搜索方法访问所有
节点,则必须调用 次深度优先遍历算法。
A.k
B1
C k-1
D k+1
5. 在n个结点的双向链表的某个结点前插入一个结点的时间复杂度是
_______。
A. O(n)
B. O(1)
C.O() D. O()
6.AVL树是一种平衡的二叉排序树,树中任一结点的
是非对称矩阵。( ) 8. 顺序查找法适用于存储结构为顺序或链式存储的线性表。( ) 9. 一棵满二叉树同时又是一棵平衡树。( ) 10. 赫夫曼树的结点个数不能是偶数。( )
4、 应用题(34分)
1.请写出下图所示的二叉树的先序序列、中序序列和后序序列。(5 分)
2.给定下列图,完成以下问题 (8分) (1)画出该图的邻接矩阵和邻接表 (2)根据所画的邻接表,从顶点A出发,写出图的深度优先遍历结果 (3)根据克鲁斯卡尔算法,求它的最小生成树(不必写出全部过程, 在生成树中标出边生成的次序即可)