C语言数据结构 综合测试题及答案.docx

上传人:b****4 文档编号:3782136 上传时间:2022-11-25 格式:DOCX 页数:13 大小:69.44KB
下载 相关 举报
C语言数据结构 综合测试题及答案.docx_第1页
第1页 / 共13页
C语言数据结构 综合测试题及答案.docx_第2页
第2页 / 共13页
C语言数据结构 综合测试题及答案.docx_第3页
第3页 / 共13页
C语言数据结构 综合测试题及答案.docx_第4页
第4页 / 共13页
C语言数据结构 综合测试题及答案.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

C语言数据结构 综合测试题及答案.docx

《C语言数据结构 综合测试题及答案.docx》由会员分享,可在线阅读,更多相关《C语言数据结构 综合测试题及答案.docx(13页珍藏版)》请在冰豆网上搜索。

C语言数据结构 综合测试题及答案.docx

C语言数据结构综合测试题及答案

第10章综合测试

[能力要求]

(1)计算机基础知识:

掌握图的概念以及图的基本操作。

(2)分析问题:

针对具体的问题,要能够运用图去进行分析,逐步找到解决问题的方法。

(3)具有概念化和抽象化能力:

针对具体的应用和实际的问题,能够运用图对问题进行抽象,提取它的逻辑结构和存储结构。

(4)发现问题和表述问题:

在具体的工程中,能够发现工程中涉及到图的问题,并能够明确表述。

(5)建模:

在具体的工程中,能够使用图进行建模,设计合理的数据结构和相应的算法。

(6)解决方法和建议:

在具体工程应用中,发现了关于图的问题,要能够解决问题,并提出合理的建议。

(7)定义功能,概念和结构:

使用图这种逻辑结构处理一些具体问题,实现系统的功能。

(8)设计过程的分段与方法:

采取不同的阶段去设计(概念设计、详细设计)一个具体的图的应用项目。

(9)软件实现过程:

了解系统中各个模块中的关于图的设计;讨论算法(数据结构、控制流程、数据流程);使用编程语言实施底层设计(编程)。

10.1综合测试题1

一、判断题

说明:

共10题,每题1分,满分10分

()1①有一批数据,经常用来进行插入和删除处理,这样的数据用顺序表存储最合适。

()2①栈用于实现子程序调用。

()3①队列可用于表达式的求值。

()4①队列在队头插入,队尾删除。

()5②若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n—1个非空指针域。

()6②完全二叉树的某结点若无左孩子,则它必是叶结点。

()7②将一棵树转换成二叉树后,根结点没有左子树。

()8②任一二叉排序树的平均查找时间都小于用顺序查找法查找同样结点的线性表的平均查找时间。

()9②中序遍历一棵二叉排序树的结点就可得到排好序的结点序列。

()10③如果待排序的数据是有一定顺序的,那么冒泡和简单选择排序法中,简单选择最好。

二、填空题

说明:

共10空,每空1分,满分10分。

1①栈的特点是,队列的特点是。

2③深度为k的完全二叉树的至少有个节点,至多有节点。

3②一棵二叉树的前序遍历结点的访问顺序为:

abdgcefh,中序遍历为:

dgbaechf,则其后序遍历结果为。

4②一组记录元素的关键码为{75,84,26,33,92,15},则利用快速排序的方法,以第一个记录为枢纽值得到的一次划分结果是:

5②n个顶点的无向连通图中最多边数为,最少边数为。

6②利用冒泡排序处理n个数据,最快比较次完成排序,最慢比较次完成排序。

三、选择题

说明:

共20小题,每小题1分,满分20分;请将答案填入题后括号中。

在本选择题中出现的front代表队列的队头指针,rear代表队列的队尾指针,top代表栈顶指针。

其中,涉及到单链表的节点定义如下:

structlist

{

intdata;

structlist*next;

};

1②循环队列用数组A[maxsize]表示,下面哪个选项表示该循环队列队满()

Arear==maxsize-1Bfront==(rear+1)%maxsize

Crear-t==maxsize  Drear-ft==maxsize-1

2②元素的入栈序列是a,b,c,d,则栈的不可能的输出序列是()

AdcbaBabcdCdcabDcbad

3②高度为3的完全二叉树最多有个节点,最少有个节点()

A7,8B4,7C7,4D8,7

4①堆的形状是一颗()

A二叉排序树B满二叉树C完全二叉树D平衡二叉树

5③从n个未排序的数中,找出处在中间位置的元素的计算时间复杂度为()

AO

(1)BO(n)CO(

)DO(

6①线性表若采用链式存储结构时,要求内存中可用存储单元的地址()。

A必须是连续的B部分地址必须是连续的

C一定是不连续的D连续不连续都可以

7①线性表是具有n个()的有限序列(n≠0)

A表元素    B.字符C数据元素      D数据项

8②设有一个二维数A[m][n],假设A[0][0]存放位置在644(10),A[2][2]存放位置在676(10),每个元素占一个空间,则A[4][5]在()位置,(10)表明用10进数表示。

A692(10)B626(10)

C709(10)D724(10)

9①不带头结点的单链表head为空的判定条件是()

Ahead==NULLBhead->next==NULL

Chead->next==headDhead!

=NULL

10②在循环双链表的p所指结点之后插入s所指结点的操作是()。

Ap->right=s;s->left=p;p->right->left=s;s->right=p->right;

Bp->right=s;p->right->left=s;s->left=p;s->right=p->right;

Cs->left=p;s->right=p->right;p->right=s;p->right->left=s;

Ds->left=p;s->right=p->right;p->right->left=s;p->right=s;

11①若在线性表中采用折半查找法查找元素,该线性表应该:

()

A元素按值有序B采用顺序存储结构

C元素按值有序,且采用顺序存储结构D元素按值有序,且采用链式存储结构

12②下列哪一个程序片断是删除链表中间点。

(假设欲删除结点为Pointer结点,Back为前一个结点)()

Afree(Pointer);Bfree(Back);

CBack=Pointer->next;DBack->next=Pointer->next;

free(Pointer);free(Pointer);

13②用邻接表存储的图的深度优先遍历(DFS)算法类似于二叉树的()

A先序遍历B中序遍历

C后序遍历D按层次遍历

14②若已知一个栈的入栈序列是1,2,3,4….,n,其输出序列为p1,p2,p3,p4,….,pn,若p1=n,则pi为()。

AiBn=i

Cn-i+1D不确定

15②()排序的比较次数与记录的初始排列状态无关。

A插入B冒泡C选择D快速

16②用链表仿真队列时,队空的条件是()

Afront==rearBrear<0

C没有Dfront==NULL

17③有一子函数如下:

intX(intn)

{if(n<=2)

return1;

else

returnX(n-1)+X(n-2)+2;

}

问X(X(3))执行()次X子函数。

A5B6C7D8

18②以下说法错误的是(   )

A对循环链表来说,从表中任一结点出发都能通过前后移操作扫描整个循环链表

B对单链表来说,只有从头结点开始才能扫描表中全部结点

C双链表的特点是找结点的前驱和后继都很容易

D对双链表来说,结点*p的存储位置既存放在其前驱结点的后继指针域中,也存放在其后继结点的前驱指针域中

19③已知广义表L=((x,y,z),a,(u,t,w)),从L表中取出原子项t的运算是()。

A.head(tail(tail(L)))B.tail(head(head(tail(L))))

C.head(tail(head(tail(L))))D.head(tail(head(tail(tail(L)))))

20③若串S1=‘ABCDEFG’,S2=‘9898’,S3=‘###’,S4=‘012345’,执行

concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))其结果为()

A.ABC###G0123B.ABCD###2345C.ABC###G2345D.ABC###2345

E.ABC###G1234F.ABCD###1234G.ABC###01234()

四、简答题

说明:

共5小题,每小题8分,满分40分

1③利用普利姆算法(Prim)构造出如图所示的一个最小生成树。

 

图10.11题图

2③一棵二叉树的结点数据采用顺序存储结构,存储于数组T中,如图所示,则将该二叉树的链接表示形式画出来。

图10.22题图

3③已知一组关键字为{19,14,23,68,84,27,55,79},请画出堆排序法进行从小到大的排序过程。

4③假设通信电文使用的字符集为{a,b,c,d,e,f},各字符在电文中出现的频度分别为:

0.34,0.05,0.12,0.23,0.08,0.18,试为这6个字符设计哈夫曼编码。

请先画出你所构造的哈夫曼树(要求树中左孩子节点的权值小于右孩子节点的权值,左分支表示字符’0’,右分支表示字符’1’),然后分别写出每个字符对应的编码。

5③设哈希(Hash)表的地址范围为0~13,哈希函数为:

H(K)=KMOD13。

K为关键字,用线性探测法再散列法处理冲突,输入关键字序列:

(10,24,32,17,31,30,46,47)造出Hash表,试回答下列问题:

(1)画出哈希表的示意图;

(2)若查找关键字30,需要依次与哪些关键字进行比较?

(3)若查找关键字14,需要依次与哪些关键字比较?

(4)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。

五、算法题

说明:

共2小题,每小题10分,满分20分。

以下题目的算法可以用C语言函数表达,也可以用伪代码描述。

1④对于一棵二叉查找树,试设计递归算法InsertNode(Root,Value),以实现插入结点Value。

二叉树的结点数据结构定义如下:

structtree

{

structtree*left;

intdata;

structtree*right;

};

typedefstructtreetreenode;

typedeftreenode*b_tree;

voidInsertNode(b_treeRoot,b_treeValue)

{

……

}

2④假设单链表中节点的定义如下:

structstudent

{

charname[20];/*学生姓名*/

intbDelelted;/*删除标记,1表示该节点被做了删除标记,0表示该节点未被作删除标记*/

structstudent*next;

};

typedefstructstudentnode;

typedefnode*link;

要求打印出单链表(已经创建)中所有未作删除标记的节点的学生姓名。

注:

可以用程序语句完成以下子函数,也可以用伪代码描述算法。

voidprint_list(linkhead)/*head指向已创建的单链表的头节点*/

{

}

10.2综合测试题2

一、判断题

说明:

共10题,每题1分,满分10分

()1②哈夫曼树是带权路径长度最短的树,路径上权值较大的结点离根较近。

( )2②堆可以看作是一个完全二叉树。

( )3②队列是一种插入与删除操作分别在表的两端进行的线性表,是一种先进后出型结构。

( )4②Hash表的平均查找长度与处理冲突的方法无关。

( )5②算法的优劣与算法描述语言无关,但与所用计算机有关。

( )6②快速排序算法在每一趟排序中都能找到一个元素放置在其最终位置上。

( )7②若二叉树用二叉链表作存贮结构,则在n个结点的二叉树链表中只有n个非空指针域。

( )8②在一个大根堆中,最小元素一定在最后。

( )9②二维数组在内存中存储也是连续的。

( )10②对于有N个结点的二叉树,其高度为

二、填空题

说明:

共10空,每空1分,满分10分。

1①数据结构类型可分成四大类,包括集合结构、结构、结构和结构。

2③设一棵完全二叉树具有500个结点,则此完全二叉树有个叶子结点,有个度为2的结点,有个只有左孩子的结点,有个只有右孩子的结点。

3③用元素“2、3、1、7、5、11、6、9”建立二叉排序树,则将该二叉树以后序遍历方式输出节点为。

4②下表为一个具有5个顶点(0、1、2、3、4)有向图形的邻接数组表示(数组内容以1表示弧存在,以0表示弧不存在),则顶点3的入度为,出度为。

图10.34题图

三、选择题

说明:

共20小题,每小题1分,满分20分;请将答案填入题后括号中。

在本选择题中出现的front代表队列的队头指针,rear代表队列的队尾指针,top代表栈顶指针。

其中,涉及到单链表的节点定义如下:

structlist

{

intdata;

structlist*next;

};

1②如果结点A有3兄弟,而且B是A的双亲,则B的度是()。

A3B4C5D6

2②对给定的数列R={7,16,4,8,20,9,6,18,5},构造一棵二叉排序树,并且删除结点16后得到的二叉树()

A

B

C

D

图10.42题图

3②对于一颗具有n个结点的树,该树中所有结点的度数之和为()

AnBn-1Cn+1Dn*n

4①折半查找的前提条件为:

()

A查找表链式存储无序B查找表为顺序存储无序

C查找表为链式存储有序D查找表为顺序存储有序

5②在下列算法中,()算法可能出现下列情况:

在最后一趟开始之前,所有的元素都不在其最终的位置上。

A堆排序B冒泡排序C插入排序D快速排序

6②若一组记录的排序码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()

A38,40,46,56,79,84B40,38,46,79,56,84

C40,38,46,56,79,84D40,38,46,84,56,79

7③要从数据文件:

1、3、5、7、9、11、13查找11时,若采用折半查找法,则在多少次比较后,才找到该数据?

()

A2B3C4D5

8③已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是()。

AacbedBdecabCcedbaDceabd

9②在单链表中,*p不是尾结点,在其后插入*s结点的操作是()

As->next=p;p->next=s.Bs->next=p->next;p->next=s.

Cs->next=p->next;p=sDp->next=s;s->next=p

10②在双向链表指针p的结点前插入一个指针q的结点操作是()

Ap->Llink=q;q->Rlink=p;p->Llink->Rlink=q;q->Llink=q;

Bp->Llink=q;p->Llink->Rlink=q;q->Rlink=p;q->Llink=p->Llink;

Cq->Rlink=p;q->Llink=p->Llink;p->Llink->Rlink=q;p->Llink=q;

Dq->Llink=p->Llink;q->Rlink=q;p->Llink=q;p->Llink=q;

11②用链表仿真栈时,栈满的条件是()

Atop==0Btop!

=0C没有Dtop==NULL

12②数组Q[n]用来表示一个循环队列,f为当前队列头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数小于n,计算队列中元素的公式为()

Ar-fB(n+f-r)%nCn+r-fD(n+r-f)%n

13②下列关键字序列中,()是堆。

A16,72,31,23,94,53B94,23,31,72,16,53

C16,53,23,94,31,72D16,23,53,31,94,72

14②若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是(  )

A快速排序B堆排序C归并排序D直接插入排序

15②关键路径是事件结点网络中()。

A从源点到汇点的最长路径B从源点到汇点的最短路径

C最长回路D最短回路

16②设无向图的顶点个数为n,则该图最多有()条边。

An-1Bn(n-1)/2Cn(n+1)/2D0En2

17②将下图的二叉树按中序线索化,结点X的右指针和Y的左指针分别指向()

A.A,DB.B,CC.D,AD.C,A

图10.517题图图10.618题图

18②已知一个图如图所示,若从顶点a出发按深度优先搜索法进行遍历,则可能得到的一种顶点序列为()

Aa,b,e,c,d,fBa,c,f,e,b,d

Ca,e,b,c,f,dDa,e,d,f,c,b

19②已知广义表LS=((a,b,c),(d,e,f)),运用head和tail函数取出LS中原子e的运算是()

Ahead(tail(LS))Btail(head(LS))

Chead(tail(head(tail(LS)))Dhead(tail(tail(head(LS))))

20②若串S1=‘ABCDEFG’,S2=‘9898’,S3=‘###’,S4=‘012345’,执行

concat(replace(S1,substr(S1,length(S2),length(S3)),S3),substr(S4,index(S2,‘8’),length(S2)))其结果为。

()

AABC###G0123BABCD###2345CABC###G2345

DABC###2345 EABC###G1234FABCD###1234

GABC###01234

四、简答题

说明:

共5小题,每小题8分,满分40分

1③试求以下稀疏数组压缩后的数组内容。

001080

000000

040300

000000

600000

050000

000000

图10.71题图

2③线性表有两种存储结构:

一是顺序表,二是链表。

试问:

(1)如果有n个线性表同时并存,并且在处理过程中各表的长度会动态变化,线性表的总数也会自动地改变。

在此情况下,应选用哪种存储结构?

为什么?

(2)若线性表的总数基本稳定,且很少进行插入和删除,但要求以最快的速度存取线性表中的元素,那么应采用哪种存储结构?

为什么?

3③将右面的树转换成对应的二叉树,并写出其中序遍历的顺序。

 

图10.83题图

4③下图是带权的有向图G,求:

(1).用邻接表表示法表示此有向图;

(2).从结点A到结点I的最短路径;

图10.94题图

5③选取哈希函数H(key)=keyMod11,用线性探测再散列开放定址法解决冲突。

试在0~10的散列地址空间内对关键字序列19、11、31、23、17、27、41、13、91、61构造哈希表,并计算在等概率下成功查找的平均查找长度。

五、算法题

说明:

共2小题,每小题10分,满分20分。

以下题目的算法可以用C语言函数表达,也可以用伪代码描述。

1④试写出一个函数,实现“计算二叉树所有叶子节点个数”。

structtree

{

structtree*left;

intdata;

structtree*right;

};

typedefstructtreetreenode;

typedeftreenode*b_tree;

intLeaf(b_treepoint)

{

……

}

2④设一单链表表中的数据元素是按值非递减有序排列的,编写一算法,将x插入到链表的适当位置上,以保持线性表的有序性。

Node*insert(Node*head,intx)

{

……

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 简历

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

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