ImageVerifierCode 换一换
格式:DOCX , 页数:20 ,大小:64.53KB ,
资源ID:10752126      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/10752126.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(高等教育考题解答福建专升本数据结构.docx)为本站会员(b****8)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

高等教育考题解答福建专升本数据结构.docx

1、高等教育考题解答福建专升本数据结构06年转升本数据结构考题一、单项选择题(共12 小题,每小题2分,共24分)1、已知单链表结构为struct node int data; struct node *next;*p,*q,*r ;删除单链表中结点p(由p指向的结点)后面的结点的操作不正确的是_C_A、q=p-next; p-next=q-next;B、p-next=p-next-next;C、r=p-next; p-next=q-next;D、q=p-next; r=q-next; p-next=r;2、若待排序对象序列在排序前已经按照关键字递增排列,则采用_A_比较次数最少。A、直接插入排序

2、 O(n)B、快速排序 O(n2)C、合并排序D、简单选择排序 O(n2)3、图的深度优先遍历类似于树的_C_A、后序遍历B、层次遍历C、前序遍历D、中序遍历4、求赋权有向图的最短路径常用的算法有_D_A、Prim算法和Kruskal算法B、Prim算法和Dijkstra算法C、Kruskal算法和Dijkstra算法D、Dijkstra算法和Floyd算法5、单链表中有n个结点,在其中查找值为x的结点,在查找成功时需要比较的平均次数是_D_。A、nB、(n-1)/2C、n/2D、(n+1)/2解答: 查询每个元素需要比较次数之和查询平均复杂度 = - 元素个数 1 + 2 + 3 +. +n

3、 n+1 = - = -n 2 思考:如果查找不成功,计算结果如何?6、线性表采用链式存储时,结点的存储地址_B_A、必须是不连续的B、连续与否均可C、必须是连续的D、和头结点的存储地址项连续7、一棵非空的二叉树中,设根结点在第0层,在第i层上最多有_D_个结点。A、2(i+1)B、2iC、2(i-1)D、2i 根 层0 1个 / A B 层1 2个 / / A B C D 层2 4个8、在下列的排序算法中,算法的时间复杂度是O(n*log2n)是_D_。A、冒泡排序B、简单选择排序C、直接插入排序D、堆排序9、使用一个栈,每次限制进栈和出栈一个元素。假设进栈的元素序列依次是a、b、c、d;指

4、出不可能的出栈序列_B_。A、abcdB、adbcC、acbdD、dcba解答:A、push(a)、pop()、push(b)、pop()、push(c)、pop()、push(d)、pop(),B、没办法C、push(a)、pop()、push(b)、 push(c)、pop()、pop()、push(d)、pop()D、push(a)、push(b)、push(c)、push(d)、pop()、pop()、pop()、pop()10、设数组queue作为循环队列Q的存储空间,front作为队头指针,rear作为队尾指针,则执行出队操作后其头指针front的值为_A_。A、front=(fr

5、ont+1)%mB、front=(front+1)%(m-1)C、front=(front-1)%mD、front=front+1解答:与方案1、2无关。11、对图进行广度优先遍历时,通常采用_C_来实现A、字符串B、B树C、队列E、栈12、一个有n个结点k叉树,树中所有结点的度数之和是_B_。A、k+nB、n-1C、knD、n2解答:思路1:树中结点的度数=结点的儿子数n个结点k叉树,每个结点最多有k个儿子,叶子没有儿子,因此答案不是k*n。思路2:正确的做法:树中所有结点的度数之和=树中所有边条数,每一条边指向一个结点,每个结点有一条天线,指向父亲结点,除了根结点之外。故答案是B,n-1二

6、、填空题(共8 小题,11空,每空2分,共22分)13、已知二叉树后序列表为CEDBA,中序列表为CBEDA,则它的前序列表为_ABCDE_。解答:后序列表为CEDBA,因此根是A,中序列表为CBEDA,因此根只有左子树CBED,没有右子树A/CEDB后序,根是BCBED中序,左子树C,右子树EDA/B / C ED后序 ED中序A/B / C D /E14、N个结点的有向图,最多有_N*(N-1)_条边。15、存储图的最常用方法有两种,它们是_邻接矩阵_和_邻接表_。16、设有一个闭散列表的容量为m,用线性探测法解决冲突,要插入一个键值,若插入成功,至多要进行_比较。17、一棵哈夫曼树有29

7、 个结点,其叶子的个数是_15_。解答:哈夫曼树没有度为1的结点, 叶子数=内结点数+1 结点总数 =叶子数+内结点数 =2*叶子数-1 =2*内结点数+118、已知单链表的结点定义为struct node int data; struct node *next;在单链表中搜索结点p(由指向的结点)的后继结点的操作是_p=p-next_。19、已知双链表结点定义为struct node int data; struct node *left,*right;双链表中结点的left和right分别指向前驱和后继结点,在双链表中删除结点p(由指向的结点)的操作是:p-left-right=_p-ri

8、ght_;和p-right-left=_p-left_。20、对于队列,只能在_队尾_插入元素,在_队头_删除元素。三、应用题(共4小题,每小题8分,共32分)21、对图1所示的树(1)结点A的度是_3_。(2)树的度是_3_。(3)画出其转换成相应二叉树的树形 A / | B C D/ / E F G H / I解答:一般树转换成二叉树步骤:将父亲管理儿子方式改为 父亲管理大儿子, 大儿子管理二儿子(二儿子变成大儿子的右孩子)二儿子管理三儿子(三儿子变成二儿子的右孩子) A ABEFCDGIH 前 / EFBCIGHDA 中 B / FEIHGDCBA后 E C F D / G / I H2

9、2、已知参加排序的正整数序列是:90、70、180、30、520、40、60、80、50、130。以第一个元素90作为基准元素,根据快速排序算法,写出完成第一趟划分后序列重新排列的情况。60、70、50、30、80、40、90、520、180、13023、一次输入如下序列中的各个整数,构造其相应的二叉搜索树,只需要画出最后生成的二叉搜索树的树形。整数序列是180、160、250、300、170、120、125、290、380。 180/ 160 250 / 120 170 300 / 125 290 38024、用Prim算法求图2所示的无向带权连通图的最小生成树。要求依次画出从顶点1出发的最

10、小生成树的生成过程。 1 41/ 2 41/ 2 3 41/ 23 4/5四、算法设计(共2小题,第25小题10分,第26小题12分,共22分)25、二叉树以二叉表为存储结构,结点结构的定义如下,请写出一个求二叉树中叶子结点个数的算法。typedef struct btnode *btlink;struct btnode TreeItem element; btlink left; btlink right;Btnode解答:与05年考题不一样int f(指向树根的指针)/f()计算树中叶子节点的个数 if(指向树根的指针=NULL)return 0; x=f(指向树根的左孩子指针); /左子

11、树中叶节点数; y= f(指向树根的右孩子指针);/右子树中叶节点数;if(root-left=NULL&root-right=NULL)return 1; else return x+y;/*或者 if( x=0&y=0)return 1; else return x+y;*/int f ( btlink root )/f()计算树中叶子节点的个数 if(root=NULL)return 0; x=f(root-left); /左子树中叶节点数; y= f(root-right);/右子树中叶节点数; if(x=0&y=0)return 1; else return x+y;T(n)=1+T

12、(n1)+T(n2) n1+n2=n=1+1+T(n11)+T(n12)+1+T(n21)+T(n22) n1=n11+n12 n2=n21+n2225、二叉树以二叉表为存储结构,结点结构的定义如下,请写出一个求二叉树的高度算法。解答:int h(指向树根的指针)/f()计算树高度 if(指向树根的指针=NULL)return 0; x=h(指向树根的左孩子指针); /左子树高度; y= h(指向树根的右孩子指针);/右子树高度; if(xy)return x+1; else return y+1; /return (xy?x:y) +1;26、阅读下列程序,它是在已知的数组a中查找数值为x的

13、元素,如果存在则输出“found”,否则输出“not found”。试问它是什么方法实现的?并请完善程序。用_查找法。#define N 10void bs(int a,int x) int l,r,m; l=0;r=N-1; m=_(l+r)/2_; while(_lam) l=_m+1_; else r=m-1; m=(l+r)/2; if(_lnext=p-;p-next=s B、p-next=s;s-next=p-next; C、S-next=p-next;p-next=s;交换p-data和s-data D、p=s;s-next=p二、填空题(每空2分,共20分)1、数据的逻辑结构反

14、映_成分数据逻辑关系_。2、对于队列,只能在_队尾_插入元素,在_队头_删除元素。3、算法是一运算序列,它应有:有限性、_确定性_、可行性、可以无任何输入,但必须_有输出_。4、由一棵二叉树的前序序列和_中序序列_可唯一确定这棵二叉树的结构。5、如果图的存储结构用_邻接表/邻接矩阵_表示,从某指定顶点作为初始点进行广度优先搜索,得到的广度优先搜索序列唯一。6、用Dijkstra算法求某一顶点到其余各顶点间的最短路径是按路径长度_递增_的次序来得到最短路径的。7、线性表(a1,a2,a3,an)(n=1)中,每个元素占c个存储单元,m为a1首地址,则按顺序存储方式存储线性表,ai存储地址是_m+

15、(i-1)*c_。8、n个结点的无向图,最多有_n*(n-1)/2_条边。三、应用题 (本大题共4小题,每小题8分,共32分)1、用Prim算法求下图连通的带权图的最小代价生成树,在算法执行的某一刻,已选取的顶点集合U=1,2,3,边的集合 TE=(1,2),(2,3),要选取下一条权值最小的边,应当从哪些边中选择?2、若用插入排序方法对线性表(25,84,21,47,5,27,68,35,20)进行排序时,请给出前四趟排序结点序列的变化情况。答:2525 8421 25 84 21 25 47 843、已知一棵二叉树的中序序列和后序序列分别为BDCEAFHG和DECBHGFA,请画出该二叉树

16、。 A / BDCE FHG 中DECB HGF 后4、设将整数a,b,c,d依次进栈,请回答:若入、出栈次序为 Push(a),Pop(),Push(b),Push(c),Pop(),Push(d),Pop(), 则出栈的字符序列是什么?答:acd四、算法设计 (本大题共3小题,每小题8分,共24分)1、二叉树以二叉链表为存储结构,类型声明如下,请写出一个求二叉树中结点个数的算法。 typedef struct node datatype data; struct node *Lchild; struct node *Rchild; BinaTree;答:int f(BinaTree *t)

17、if(t = = NULL) return;else return f(t-left)+ f(t-right)+1; 2、设线性表用顺序结构实现,声明如下: typedef struct sqlist char datamaxsize; int n; Sqlist; 请写一个算法,判断其是否回文?(顺读与倒读 一样如:“ababbaba为回文)答:解法1:形参和实参直接传递结构变量#include #define MAXLENGTH 100typedef struct sqlist char dataMAXLENGTH; int n;Sqlist;void f(Sqlist a) int i;

18、 if(a.n=0)return; for(i=0;in=0)return; for(i=0;in)/2;i+) if(a-datai!=a-dataa-n-i-1) printf(No); return; printf(Yes);void main() Sqlist s; printf(input n:); scanf(%d,&(s.n); printf(input data:); scanf(%s,s.data); f(&s);解法3:类似解法2,为指针变量定义了类型List#include #define MAXLENGTH 100typedef struct sqlist *List;

19、typedef struct sqlist char dataMAXLENGTH; int n;Sqlist;void f(List a) int i; if(a-n=0)return; for(i=0;in)/2;i+) if(a-datai!=a-dataa-n-i-1) printf(No); return; printf(Yes);void main() Sqlist s; printf(input n:); scanf(%d,&(s.n); printf(input data:); scanf(%s,s.data); f(&s);3、阅读下列程序,判断它是用什么方法实现排序(升序)的

20、?并完善下列程序。 #include void bubble(int,int); main() int array=55,2,6,4,32,12,9,73,26,37; int size=sizeof(array)/sizeof(int); bubble(_array,10_); void bubble(int a,int size) int i,temp; int end_=0_; int pass=1;/= while(!end&passsize) end=1; for(i=0,iai+1) temp=ai; ai=ai+1; ai+1=temp; end=_0_; _pass+_; /= for(i=0;isize;i+) printf(%d,ai);

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1