2014年广西壮族自治区数据结构试题大全考试技巧与口诀
数据结构期末考试题
数据结构期末考试题一、选择题(每题2分,共40分)1. 下列哪一种数据结构适合用于实现一个先进先出(FIFO)的队列?A. 栈B. 链表C. 数组D. 树2. 在二叉树中,如果一个节点的度为2,那么这个节点称为什么?A. 叶子节点B. 根节点C. 分支节点D. 中间节点3. 在哈希表中,为了解决散列冲突可以采用的方法有哪些?A. 开放定址法B. 链地址法C. 再散列法D. 随机探测法4. 下列关于图的描述中,错误的是?A. 图是由顶点和边组成的数据结构B. 无向图中边是有方向的C. 有向图中边是有方向的D. 图可以用邻接矩阵或邻接表表示5. 在堆排序算法中,堆是一种什么类型的数据结构?A. 栈B. 队列C. 二叉树D. 图二、填空题(每空2分,共20分)6. 在深度优先搜索算法中,使用栈来实现,先进后出的规则可以保证节点的______先于子节点进行遍历。
7. 在广度优先搜索算法中,使用队列来实现,先进先出的规则可以保证节点的______先于兄弟节点进行遍历。
8. 图中任意两个顶点之间的路径长度被称为该路径的______。
9. 当前最小生成树算法Prim和Kruskal的时间复杂度均为O(______ log ______)。
10. 在快速排序算法中,选择一个元素作为基准,将小于等于基准的放在左边,大于基准的放在右边,这个过程称为______。
三、简答题(每题10分,共30分)11. 请简单描述一下堆排序算法的原理和过程。
12. 请说明图的邻接矩阵和邻接表分别是什么,它们有何优缺点?13. 请写出快速排序算法的递归实现代码,并说明其时间复杂度是多少。
四、编程题(40分)请设计一个数据结构,实现一个简单的图类Graph,包含以下功能:1. 添加顶点addVertex(Vertex v)2. 添加边addEdge(Vertex v1, Vertex v2)3. 深度优先搜索算法dfs(Graph g, Vertex v)4. 广度优先搜索算法bfs(Graph g, Vertex v)要求根据以上功能设计实现Graph类,并编写测试代码对其进行验证。
2013年广西壮族自治区数据结构考试技巧重点
15、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B 。
A.单链表 B.静态链表 C.线性链表 D.顺序存储结构
16、下列选项中,符合堆定义的是
A.{102,24,55,60,89,93}
B.{24,89,55,60,93,102}
C.{102,93,55,60,89,24}
D.{102,60。89,93,55,24}
17、通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着 B 。
A.数据元素具有同一特点
8、对于图1所示的二叉树,其后序序列为(C )。
A)ABDECFG B)DBEAFCG
C)DEBFGCA D)GFCEBDA
9、数据结构中,从逻辑上可以把数据结构分成(?)。
?A.动态结构和静态结构?B.紧凑结构和非紧凑结构?C.线性结构和非线性结构?D.内部结构和外部结构
D 存储方式最节省运算时间。
A.单链表 B.给出表头指针的单循环链表 C.双链表 D.带头结点的双循环链表
7、有向图采用邻接矩阵存储,某一行中非零元素的个数等于
A.对应顶点v的度
B.对应顶点v的出度
C.对应顶点v的入度
D.依附于对应顶点v的边数
C.树中两个权值最小的结点可能是兄弟结点
D.同一结点集构造的二叉树中,哈夫曼树的WPL最小
45、栈采用不同的存储方式时,下列关于出栈过程的叙述中,正确的是
A.顺序栈需要判定栈空,链栈也需要判定
B.顺序栈需要判定栈空,而链栈不需要判定
C.顺序栈不需要判定栈空,而链栈需要判定
(完整版),算法与数据结构题库及答案,推荐文档
A 问题规模是 n2
B 问题规模与 n2 成正比
C 执行时间等于 n2
D 执行时间与 n2 成正比
2、关于数据结构的描述,不正确的是( )。
A 数据结构相同,对应的存储结构也相同。
B 数据结构涉及数据的逻辑结构、存储结构和施加其上的操作等三个方面。
C 数据结构操作的实现与存储结构有关。
D 定义逻辑结构时可不考虑存储结构。
D O(nlog2n)
28、n 个结点的线索二叉树中,线索的数目是( )。
A n-1
B n+1
C 2n
D 2n-1
29、若数据元素序列{11,12,13,7,8,9,23,4,5}是采用下列排序方法之一得到的第二趟排序
后的结果,则该排序方法只能是( )。
A 插入排序 B 选择排序 C 交换排序 D 归并排序
A. n+1
B. n
C. n-1
11. 一个递归算法必须包括__________。
D. n-2
A. 递归部分 B. 结束条件和递归部分 C. 迭代部分 D. 结束条件和迭代部分
12. 从逻辑上看可以把数据结构分为__________两大类。
第 1 页,共 8 页
A.动态结构、静态结构
B.顺序结构、链式结构
二、填空题
1、算法效率的度量分为 事后测量
和
事前估 两种。
2、算法是一个有穷的指令集,它为解决某一特定任务规定了一个运算序列。它应当具有
输入、输出、确定性、 有穷性
可行性等特性。
3、一个抽象数据类型 ADT 包括
数据操作 和 对象
两个部分。
4、队列的插入操作是在 队尾 进行,删除操作是在 队头
进行。
2010广西壮族自治区分析数据库的考试题目高级
1、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表头指针为head。
二叉树按二叉链表方式存储,链接时用叶子结点的右指针域来存放单链表指针。
分析你的算法的时、空复杂度。
2、二部图(bipartite graph) G=(V,E)是一个能将其结点集V分为两不相交子集V 1和V2=V-V1的无向图,使得:V1中的任何两个结点在图G中均不相邻,V2中的任何结点在图G中也均不相邻。
(1).请各举一个结点个数为5的二部图和非二部图的例子。
(2).请用C或PASCAL编写一个函数BIPARTITE判断一个连通无向图G是否是二部图,并分析程序的时间复杂度。
设G用二维数组A来表示,大小为n*n(n为结点个数)。
请在程序中加必要的注释。
若有必要可直接利用堆栈或队列操作。
【3、二叉树的层次遍历序列的第一个结点是二叉树的根。
实际上,层次遍历序列中的每个结点都是“局部根”。
确定根后,到二叉树的中序序列中,查到该结点,该结点将二叉树分为“左根右”三部分。
若左、右子树均有,则层次序列根结点的后面应是左右子树的根;若中序序列中只有左子树或只有右子树,则在层次序列的根结点后也只有左子树的根或右子树的根。
这样,定义一个全局变量指针R,指向层次序列待处理元素。
算法中先处理根结点,将根结点和左右子女的信息入队列。
然后,在队列不空的条件下,循环处理二叉树的结点。
队列中元素的数据结构定义如下:typedef struct{ int lvl; //层次序列指针,总是指向当前“根结点”在层次序列中的位置int l,h; //中序序列的下上界int f; //层次序列中当前“根结点”的双亲结点的指针int lr; // 1—双亲的左子树 2—双亲的右子树}qnode;BiTree Creat(datatype in[],level[],int n)//由二叉树的层次序列level[n]和中序序列in[n]生成二叉树。
(完整word版)数据结构试卷及答案(word文档良心出品)
注意事项:1、下面关于串的叙述中,哪一个是不正确的?( )A .串是字符的有限序列B .空串是由空格构成的串C .模式匹配是串的一种重要运算D .串既可以采用顺序存储,也可以采用链式存储 2、设无向图的顶点个数为n ,则该图最多有( )条边。
A .n-1B .n(n-1)/2C . n(n+1)/2D .0 3、以下数据结构中,( )是非线性数据结构。
A .树B .字符串C .队列D .栈 4、下面关于线性表的叙述中,错误的是哪一个?( )A .线性表采用顺序存储,必须占用一片连续的存储单元。
B .线性表采用顺序存储,便于进行插入和删除操作。
C .线性表采用链接存储,不必占用一片连续的存储单元。
D .线性表采用链接存储,便于插入和删除操作。
5、假设以数组A[m]存放循环队列的元素,其头尾指针分别为front 和rear ,则当前队列中的元素个数为( )。
A .(rear-front+m)%mB .rear-front+1C .(front-rear+m)%mD .(rear-front)%m6、在单链表指针为p 的结点之后插入指针为s 的结点,正确的操作是( )。
A .p->next=s; s->next=p->next;B .s->next=p->next; p->next=s;C .p->next=s; p->next=s->next;D .p->next=s->next; p->next=s; 7、设栈的输入序列是1,2,3,4,则( )不可能是其出栈序列。
A .1,2,4,3B .2,1,3,4C .1,4,3,2D .4,3,1,2, 8、广义表(a,(b,c),d,e )的表头和表尾分别为( )。
A .a 和(b,c),d,e B .(a )和(b,c),d,eC .a 和 ((b,c),d,e)D .(a) 和((b,c),d,e)9、栈和队都是( )A .顺序存储的线性结构B .链式存储的非线性结构C .限制存取点的线性结构D .限制存取点的非线性结构 10、从逻辑上可以把数据结构分为( )两大类。
2014广西壮族自治区数据结构最新考试试题库(完整版)
1、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以C)部分地址必须是连续 D)必须是不连续的2、广义表A=(A,B,(C,D),(E,(F,G))),则head(tail(head(tail(tail(A)))))=( D )。
A) (G) B) (D) C) C D) D3、线索二叉树中某结点D,没有左孩子的条件是( B )。
A)D->Lchild=Null B) D->ltag=1C) D->Rchild=Null D) D->ltag=04、在一个具有n个单元的顺序栈中,假定以地址低端(即0单元)作为栈底,以top作为栈顶指针,当做出栈处理时,top变化为( C )。
A)top不变 B)top=0 C)top-- D)top++5、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以C)部分地址必须是连续 D)必须是不连续的6、采用链结构存储线性表时,其地址( B )。
A)必须是连续的 B)连续不连续都可以C)部分地址必须是连续 D)必须是不连续的7、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一C)不含回路 D)有n条边8、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
A) 单链表 B) 仅有头指针的单循环链表C) 双链表 D) 仅有尾指针的单循环链表9、栈进行插入和删除操作的特点是( A )。
A)LIFO B)FIFOC)FCFS D)HPF10、向一个栈顶指针为hs的链栈中插入一个s结点时,应执行( D )。
A) hs->next=s; B) s->next=hs->next; hs->next=s;C) s->next=hs; hs=s; D) s->next=hs; hs=hs->next;11、栈进行插入和删除操作的特点是( A )。
全国2014年10月自考《数据结构》试题及其答案【在最后】
大题共4小题,每小题5分。
共20分)
请在答题卡上作答。
26.设Q是有N个存储空间的循环队列,初始状态front=rear=0,约定指针rear指向的单元始终为空,回答下列问题。
请根据最优二叉树的基本原理,采用类C语言,描述你所设计的成绩判定过程。
29.给定有向无环图G如题29图所示,写出G的5种不同的拓扑排序序列。
的单链表定义如下,其中freq域记录本结点被访问的次数,初值为0,单链表始终以freq 序。
函数f3l完成的功能是:查找给定关键字所在结点,若查找成功,则该结点的freq域加值调整结r旨位置。
请将空白处(1)~(3)补充完整。
在答题卡上作答。
回答下列问题。
五、算法设计题(本大题共l小题,共“l0分) 请在答题卡上作答。
34.已知带头结点的单链表类型定义如下:
- 10 -。
数据结构期末考试试题
数据结构期末考试试题一、选择题1. 数据结构是关于什么的学科?a) 算法设计与分析b) 数据的组织、存储与管理c) 编程语言的使用d) 硬件系统的设计与实现2. 下列哪个数据结构是后进先出(LIFO)的?a) 队列b) 栈c) 链表d) 树3. 常用的查找算法中,下列哪个算法的时间复杂度最低?a) 二分查找b) 线性查找c) 哈希查找d) 顺序查找4. 以下哪个数据结构可以实现先进先出(FIFO)的访问方式?a) 栈b) 队列c) 链表d) 树5. 在二叉树中,每个节点最多有多少个子节点?a) 0b) 1c) 2d) 3二、填空题1. 在堆排序中,使用______数据结构来实现最小堆或最大堆。
2. 图中顶点的度是指与该顶点______相连的边的个数。
3. 哈希表中用于处理冲突的方法有开放地址法和______法。
4. 在图的深度优先搜索算法中,使用______来记录已经访问过的顶点。
5. 二叉搜索树中,中序遍历的结果是______有序的序列。
三、简答题1. 请简要说明线性表和链表的区别。
2. 请解释下列术语:a) 栈b) 队列c) 图d) 树3. 请简述哈希表的原理以及它的应用场景。
四、编程题请用C语言实现一个栈结构,并实现入栈(push)、出栈(pop)和判断栈是否为空(isEmpty)的操作。
结束语通过这次考试,我们对数据结构的基本概念、常用算法和数据结构的应用有了更深入的了解。
希望大家在复习的过程中能够掌握其中的关键点,并能够在实际问题中灵活运用。
祝各位取得好成绩!。
【免费下载】数据结构试题库答案
(15) 求单链表中当前结点的后继和前驱的时间复杂度分别是( )。
A) O(n)和 O(1)
B) O(1)和 O(1)
C) O(1)和 O(n)
D) O(n)和 O(n)
(16) 非空的单循环链表的头指针为 head,尾指针为 rear,则下列条件成立的是( )。
A) rear->next= =head
C) 线性结构、非线性结构
(5) 下列叙述中正确的是( )。
A)一个逻辑数据结构只能有一种存储结构
B) 逻辑结构
B)数据的逻辑结构属于线性结构,存储结构属于非线性结构
C)一个逻辑数据结构可以有多种存储结构,且各种存储结构不影响数据处理的效率
D)一个逻辑数据结构可以有多种存储结构,且各种存储结构影响数据处理的效率
D) 初等结构、构造型结构
C) 数据元素
C) O(n)
)。 C)O(m*n)
对全部高中资料试卷电气设备,在安装过程中以及安装结束后进行高中资料试卷调整试验;通电检查所有设备高中资料电试力卷保相护互装作置用调与试相技互术关,系电,力根通保据过护生管高产线中工敷资艺设料高技试中术卷资,配料不置试仅技卷可术要以是求解指,决机对吊组电顶在气层进设配行备置继进不电行规保空范护载高与中带资负料荷试下卷高问总中题体资,配料而置试且时卷可,调保需控障要试各在验类最;管大对路限设习度备题内进到来行位确调。保整在机使管组其路高在敷中正设资常过料工程试况中卷下,安与要全过加,度强并工看且作护尽下关可都于能可管地以路缩正高小常中故工资障作料高;试中对卷资于连料继接试电管卷保口破护处坏进理范行高围整中,核资或对料者定试对值卷某,弯些审扁异核度常与固高校定中对盒资图位料纸置试,.卷保编工护写况层复进防杂行腐设自跨备动接与处地装理线置,弯高尤曲中其半资要径料避标试免高卷错等调误,试高要方中求案资技,料术编试交写5、卷底重电保。要气护管设设装线备备置敷4高、调动设中电试作技资气高,术料课中并3中试、件资且包卷管中料拒含试路调试绝线验敷试卷动槽方设技作、案技术,管以术来架及避等系免多统不项启必方动要式方高,案中为;资解对料决整试高套卷中启突语动然文过停电程机气中。课高因件中此中资,管料电壁试力薄卷高、电中接气资口设料不备试严进卷等行保问调护题试装,工置合作调理并试利且技用进术管行,线过要敷关求设运电技行力术高保。中护线资装缆料置敷试做设卷到原技准则术确:指灵在导活分。。线对对盒于于处调差,试动当过保不程护同中装电高置压中高回资中路料资交试料叉卷试时技卷,术调应问试采题技用,术金作是属为指隔调发板试电进人机行员一隔,变开需压处要器理在组;事在同前发一掌生线握内槽图部内 纸故,资障强料时电、,回设需路备要须制进同造行时厂外切家部断出电习具源题高高电中中源资资,料料线试试缆卷卷敷试切设验除完报从毕告而,与采要相用进关高行技中检术资查资料和料试检,卷测并主处且要理了保。解护现装场置设。备高中资料试卷布置情况与有关高中资料试卷电气系统接线等情况,然后根据规范与规程规定,制定设备调试高中资料试卷方案。
2013广西壮族自治区数据库考试含答案高级
1、有一种简单的排序算法,叫做计数排序(count sorting)。
这种排序算法对一个待排序的表(用数组表示)进行排序,并将排序结果存放到另一个新的表中。
必须注意的是,表中所有待排序的关键码互不相同,计数排序算法针对表中的每个记录,扫描待排序的表一趟,统计表中有多少个记录的关键码比该记录的关键码小,假设针对某一个记录,统计出的计数值为c,那么,这个记录在新的有序表中的合适的存放位置即为c。
(1) (3分)给出适用于计数排序的数据表定义;(2) (7分)使用Pascal或C语言编写实现计数排序的算法;(3) (4分)对于有n个记录的表,关键码比较次数是多少?(4) (3分)与简单选择排序相比较,这种方法是否更好?为什么?2、4、void LinkList_reverse(Linklist &L)//链表的就地逆置;为简化算法,假设表长大于2{p=L->next;q=p->next;s=q->next;p->next=NULL;while(s->next){q->next=p;p=q;q=s;s=s->next; //把L的元素逐个插入新表表头}q->next=p;s->next=q;L->next=s;}//LinkList_reverse3、#define maxsize 栈空间容量void InOutS(int s[maxsize])//s是元素为整数的栈,本算法进行入栈和退栈操作。
{int top=0; //top为栈顶指针,定义top=0时为栈空。
for(i=1; i<=n; i++) //n个整数序列作处理。
{scanf(“%d”,&x); //从键盘读入整数序列。
if(x!=-1) // 读入的整数不等于-1时入栈。
if(top==maxsize-1){printf(“栈满\n”);exit(0);}else s[++top]=x; //x入栈。
2014云南省数据结构考试技巧、答题原则
33、若采用邻接矩阵法存储一个n个顶点的无向图,则该邻接矩阵是一个( D )。
A)上三角矩阵 B) 稀疏矩阵
C) 对角矩阵 D) 对称矩阵
34、n个顶点的图的最小生成树必定( D ),是不正确的描述。
A)不唯一 B)权的总和唯一
A) hs->next=s; B) s->next=hs->next; hs->next=s;
C) s->next=hs; hs=s; D) s->next=hs; hs=hs->next;
19、如果结点A有3个兄弟,而且B为A的双亲,则B的度为( B )。
22、对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。这样的排序方法是( A )。
A)直接选择排序 B)直接插入排序
C)快速排序 D)起泡排序
23、串的逻辑结构与( D )的逻辑结构不同。
A)栈 B) 二叉树
C) 广义表 D) 图
3、设单链表中指针p指着结点A,若要删除A之后的结点(若存在),则需要修改指针的操作为( A )。
A)p->next=p->next->next B)p=p->next
B)只有一部分,存放结点值
C)只有一部分,存储表示结点间关系的指针
D)分两部分,一部分存放结点值,另一部分存放结点所占单元数
30、下列各种数据结构中属于线性结构的有( A )。
A)栈 B) 二叉树
C) 广义表 D) 图
A)线性表 B)栈
C)队列 D)树
24、某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用( D )存储方式最节省运算时间。
2014广西壮族自治区数据库期末考试入门
1、设t是给定的一棵二叉树,下面的递归程序count(t)用于求得:二叉树t中具有非空的左,右两个儿子的结点个数N2;只有非空左儿子的个数NL;只有非空右儿子的结点个数NR和叶子结点个数N0。
N2、NL、NR、N0都是全局量,且在调用count(t)之前都置为0.typedef struct node{int data; struct node *lchild,*rchild;}node;int N2,NL,NR,N0;void count(node *t){if (t->lchild!=NULL) if (1)___ N2++; else NL++;else if (2)___ NR++; else (3)__ ;if(t->lchild!=NULL)(4)____; if (t->rchild!=NULL) (5)____;}26.树的先序非递归算法。
void example(b)btree *b;{ btree *stack[20], *p;int top;if (b!=null){ top=1; stack[top]=b;while (top>0){ p=stack[top]; top--;printf(“%d”,p->data);if (p->rchild!=null){(1)___; (2)___;}if (p->lchild!=null)(3)___; (4)__;}}}}2、请设计一个算法,要求该算法把二叉树的叶子结点按从左到右的顺序连成一个单链表,表头指针为head。
二叉树按二叉链表方式存储,链接时用叶子结点的右指针域来存放单链表指针。
分析你的算法的时、空复杂度。
3、设从键盘输入一整数的序列:a1, a2, a3,…,an,试编写算法实现:用栈结构存储输入的整数,当ai≠-1时,将ai进栈;当ai=-1时,输出栈顶整数并出栈。
算法应对异常情况(入栈满等)给出相应的信息。
2014数据结构B卷参考答案
命题人:审核人:试卷分类(A卷或B卷) B五邑大学试卷参考答案及评分标准学期:2013至2014学年度第 1 学期课程:数据结构课程代号:0800310使用班级:120109 姓名:学号:单项选择题(10小题,每小题2分,共20分)1.有六个元素6,5,4,3,2,1 顺序进栈,问下列哪一个不是合法的出栈序列?(B )不是C吗?A. 5 4 3 6 1 2B. 4 5 3 1 2 6C. 3 4 6 5 2 1D. 2 3 4 1 5 62.由75个结点构造一棵完全二叉树,该树的深度是( B )。
A.4 B.5 C.6 D.7深度为k的最多节点个数:2的k次方-1。
具有n个结点的完全二叉树的深度为log2(n)[取整数]+1.不是D吗?3.下列算法:for (i=n-1;i>=1;i=i/2 )for(j=1;j<=i;j++)if( A[j]>A[j+1])A[j]与A[j+1]对换;其中n为正整数,则最后一行的语句频度在最坏情况下是(D )A. O(n)B. O(nlog2n)C. O(n3)D. O(n2)4.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是( C )。
A.6 B. 4 C. 3 D. 25.数组A[6][7]的每个元素占五个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A[5][5]的地址是( A )。
假设下标从0开始。
A. 1175B. 1180C. 1205D. 1200A. i-j-1B. i-jC. j-i+1D. 不确定的7. 在单链表指针为p 的结点之后插入指针为s 的结点,正确的操作是:( B )。
A .p->next=s;s->next=p->next; B . s->next=p->next;p->next=s; C .p->next=s;p->next=s->next; D . p->next=s->next;p->next=s;8. 假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女之间不能相互继承。
2014广西壮族自治区分析数据库的考试题目高级
1、对一般二叉树,仅根据一个先序、中序、后序遍历,不能确定另一个遍历序列。
但对于满二叉树,任一结点的左右子树均含有数量相等的结点,根据此性质,可将任一遍历序列转为另一遍历序列(即任一遍历序列均可确定一棵二叉树)。
void PreToPost(ElemType pre[] ,post[],int l1,h1,l2,h2)//将满二叉树的先序序列转为后序序列,l1,h1,l2,h2是序列初始和最后结点的下标。
{if(h1>=l1){post[h2]=pre[l1]; //根结点half=(h1-l1)/2; //左或右子树的结点数PreToPost(pre,post,l1+1,l1+half,l2,l2+half-1) //将左子树先序序列转为后序序列PreToPost(pre,post,l1+half+1,h1,l2+half,h2-1) //将右子树先序序列转为后序序列} }//PreToPost32. .叶子结点只有在遍历中才能知道,这里使用中序递归遍历。
设置前驱结点指针pre,初始为空。
第一个叶子结点由指针head指向,遍历到叶子结点时,就将它前驱的rchild指针指向它,最后叶子结点的rchild为空。
LinkedList head,pre=null; //全局变量LinkedList InOrder(BiTree bt)//中序遍历二叉树bt,将叶子结点从左到右链成一个单链表,表头指针为head{if(bt){InOrder(bt->lchild); //中序遍历左子树if(bt->lchild==null && bt->rchild==null) //叶子结点if(pre==null) {head=bt; pre=bt;} //处理第一个叶子结点else{pre->rchild=bt; pre=bt; } //将叶子结点链入链表InOrder(bt->rchild); //中序遍历左子树pre->rchild=null; //设置链表尾}return(head); } //InOrder时间复杂度为O(n),辅助变量使用head和pre,栈空间复杂度O(n)2、由二叉树的前序遍历和中序遍历序列能确定唯一的一棵二叉树,下面程序的作用是实现由已知某二叉树的前序遍历和中序遍历序列,生成一棵用二叉链表表示的二叉树并打印出后序遍历序列,请写出程序所缺的语句。
2011广西壮族自治区分析数据库的考试题目基础
1、设有一个数组中存放了一个无序的关键序列K1、K2、…、Kn。
现要求将Kn放在将元素排序后的正确位置上,试编写实现该功能的算法,要求比较关键字的次数不超过n。
51. 借助于快速排序的算法思想,在一组无序的记录中查找给定关键字值等于key的记录。
设此组记录存放于数组r[l..h]中。
若查找成功,则输出该记录在r数组中的位置及其值,否则显示“not find”信息。
请编写出算法并简要说明算法思想。
2、编写一个过程,对一个n×n矩阵,通过行变换,使其每行元素的平均值按递增顺序排列。
3、约瑟夫环问题(Josephus问题)是指编号为1、2、…,n的n(n>0)个人按顺时针方向围坐成一圈,现从第s个人开始按顺时针方向报数,数到第m个人出列,然后从出列的下一个人重新开始报数,数到第m的人又出列,…,如此重复直到所有的人全部出列为止。
现要求采用循环链表结构设计一个算法,模拟此过程。
4、我们可用“破圈法”求解带权连通无向图的一棵最小代价生成树。
所谓“破圈法”就是“任取一圈,去掉圈上权最大的边”,反复执行这一步骤,直到没有圈为止。
请给出用“破圈法”求解给定的带权连通无向图的一棵最小代价生成树的详细算法,并用程序实现你所给出的算法。
注:圈就是回路。
5、两棵空二叉树或仅有根结点的二叉树相似;对非空二叉树,可判左右子树是否相似,采用递归算法。
int Similar(BiTree p,q) //判断二叉树p和q是否相似{if(p==null && q==null) return (1);else if(!p && q || p && !q) return (0);else return(Similar(p->lchild,q->lchild) && Similar(p->rchild,q->rchild)) }//结束Similar6、证明由二叉树的中序序列和后序序列,也可以唯一确定一棵二叉树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
14、不带头结点的单链表head为空的判定条件是 A 。
A.head == NULL B head->next ==NULL
C.head->next ==head D head!=NULL
A)元素个数 B)所需的存储量
C)平均查找长度 D)算法难易程度
26、与单链表相比,双链表的优点之一是 D 。
A.插入、删除操作更简单
B.可以进行随机访问
C.可以省略表头指针或表尾指针
D.顺序访问相邻结点更灵活
27、若某线性表中最常用的操作是取第i个元素和找第i个元素的前驱,则采用( )存储方法最节省时间
A 顺序表 B单链表 C 双链表 D单循环链表
28、以下说法正确的是 D 。
A.数据项是数据的基本单位
B.数据元素是数据的最小单位
C.数据结构是带结构的数据项的集合
D.一些表面上很不相同的数据可以有相同的逻辑结构
29、从一棵二叉搜索树中查找一个元素时,其时间复杂度大致为( )。
A.top=top+1;V[top]=x B.V[top]=x;top=top+1
C.top=top一1;V[mp]=x D.V[top]=x;top=top—l
5、如果最常用的操作是取第i个结点及其前驱,则采用 D 存储方式最节省时间。
A.单链表 B.双链表 C.单循环链表 D. 顺序表
3、在平衡二叉树中插入一个结点后造成不平衡,设最低的不平衡结点为A,并已知A的左孩子平衡因子为0,右孩子平衡因子为1,则应该做( )型调整以使其平衡
A LL B LR C RL D RR
4、若一个栈以数组V[0..n-1]存储,初始栈顶指针top为n,则x入栈的正确操作是
A.O(1) B.O(n)
C.O(1Ogzn) D.O(n2)
30、需要分配较大空间,插入和删除不需要移动元素的线性表,其存储结构是 B 。
A.单链表 B.静态链表 C.线性链表 D.顺序存储结构
31、下列选项中,其平均查找性能与基于二叉排序树的查找相当的是
D.s->next = p;s->prior = p->prior;p->prior->next = s;p->prior = s
20、在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。
A. HL=ps p一>next=HL
B. p一>next=HL;HL=p3
15、在循环双链表的p所指的结点之前插入s所指结点的操作是 D 。
A.p->prior = s;s->next = p;p->prior->next = s;s->prior = p->prior
B.p->prior = s;p->prior->next = s;s->next = p;s->prior = p->prior
22、深度为k的完全二叉树至多有( )个结点
A B C D
23、若某线性表中最常用的操作是取第i个元素和找第i个元素的前驱,则采用( )存储方法最节省时间
A 顺序表 B单链表 C 双链表 D单循环链表
A.n—i B.n—i—l C.i D.i+1
36、如果对线性表的操作只有两种,即删除第一个元素,在最后一个元素的后面插入新元素,则最好使用 B 。
A.只有表头指针没有表尾指针的循环单链表
B.只有表尾指针没有表头指针的循环单链表
C.非循环双链表
连续存放,则元素a[8][5]的起始地址是
A.SA+141 B.SA+144 C.SA+222 D.SA+255
17、下列关于哈夫曼树的叙述中,错误的是
A.用n个结点构造的哈夫曼树是唯一的
B.哈夫曼树中只有度为0或度为2的结点
C.树中两个权值最小的结点可能是兄弟结点
A.二分查找 B.顺序查找 C.分块查找 D.索引顺序查找
32、如果最常用的操作是取第i个结点及其前驱,则采用 D 存储方式最节省时间。
A.单链表 B.双链表 C.单循环链表 D. 顺序表
33、在存储数据时,通常不仅要存储各数据元素的值,而且还要存储 C 。
D.同一结点集构造的二叉树中,哈夫曼树的WPL最小
18、G是一个非连通无向图,共28条边,则该图至少有( )个顶点
A 6 B 7 C 8 D 9
19、在循环双链表的p所指的结点之前插入s所指结点的操作是 D 。
1、有向图采用邻接矩阵存储,某一行中非零元素的个数等于
A.对应顶点v的度
B.对应顶点v的出度
C.对应顶点v的入度
D.依附于对应顶点v的边数
2、在数据结构中,从逻辑上可以把数据结构分为 C 。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构
C.线性结构和非线性结构 D.内部结构和外部结构
12、链表不具备的特点是 A 。
A.可随机访问任一结点 B.插入删除不需要移动元素
C.不必事先估计存储空间 D.所需空间与其长度成正比
13、在数据结构中,从逻辑上可以把数据结构分为 C 。
A.动态结构和静态结构 B.紧凑结构和非紧凑结构
C. p一>next=Hl;p=HL;
D. p一>next=HL一>next;HL一>next=p
21、一个栈的入栈序列是1,2,3,4,5,则不可能的出栈序列是( )
A 5,4,3,2,1 B 4,5,3,2,1 C 4,3,5,1,2 D 1,2,3,4,5
45、在一个单链表HL中,若要向表头插入一个由指针p指向的结点,则执行( )。
A. HL=ps p一>next=HL
B. p一>next=HL;HL=p3
C. p一>next=Hl;p=HL;
D. p一>next=HL一>next;HL一>next=p
C.指针型 D.常值引用型?
39、衡量查找算法效率的主要标准是( C )。
A)元素个数 B)所需的存储量
C)平均查找长度 D)算法难易程度
40、不带头结点的单链表head为空的判定条件是 A 。
A.head == NULL B head->next ==NULL
D.循环双链表
37、深度为k的完全二叉树至多有( )个结点
A B C D
38、当一个作为实际传递的对象占用的存储空间较大并可能需要修改时,应最好把它说明为( )参数,以节省参数值的传输时间和存储参数的空间。
A.整形 B.引用型
A.数据的处理方法 B.数据元素的类型
C.数据元素之间的关系 D.数据的存储方法
34、向一个长度为n的顺序表中插人一个新元素的平均时间复杂度为( )。
A.O(n) B.O(1)
C.O(n2) D.O(10g2n)
35、长度为n的顺序表,删除位置i上的元素(0≤i≤n一1),需要移动的元素个数为
46、在数据结构中,从逻辑上可以பைடு நூலகம்数据结构分为 C 。
C.head->next ==head D head!=NULL
41、在一个长度为n(n>1)的单链表上,设有头和尾两个指针,执行 B 操作与链表的长度有关。
A.删除单链表中的第一个元素
B.删除单链表中的最后一个元素
C.在单链表第一个元素前插入一个新元素
D.在单链表最后一个元素后插入一个新元素
A.p->prior = s;s->next = p;p->prior->next = s;s->prior = p->prior
B.p->prior = s;p->prior->next = s;s->next = p;s->prior = p->prior
C.s->next = p;s->prior = p->prior;p->prior = s;p->prior->next = s
A.数据元素具有同一特点
B.不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致
C.每个数据元素都一样
D.数据元素所包含的数据项的个数要相等
11、若进栈序列为1,2,3,4,则不可能得到的出栈序列是( C )。
A)3,2,1,4 B)3,2,4,1
C)4,2,3,1 D)2,3,4,1
6、非空的循环单链表head的尾结点(由p所指向)满足 C 。
A.p->next == NULL B.p == NULL
C.p->next ==head D.p == head
7、在二维数组a[9][10]中:每个数组元素占用3个存储空间,从首地址SA开始按行优先
24、通常要求同一逻辑结构中的所有数据元素具有相同的特性,这意味着 B 。
A.数据元素具有同一特点
B.不仅数据元素所包含的数据项的个数要相同,而且对应的数据项的类型要一致
C.每个数据元素都一样
D.数据元素所包含的数据项的个数要相等
25、衡量查找算法效率的主要标准是( C )。
42、在以下的叙述中,正确的是 B 。
A.线性表的顺序存储结构优于链表存储结构
B.二维数组是其数据元素为线性表的线性表
C.栈的操作方式是先进先出
D.队列的操作方式是先进后出
43、栈采用不同的存储方式时,下列关于出栈过程的叙述中,正确的是