本科随堂测验带答案.docx
《本科随堂测验带答案.docx》由会员分享,可在线阅读,更多相关《本科随堂测验带答案.docx(11页珍藏版)》请在冰豆网上搜索。
本科随堂测验带答案
第1次测验
1.算法的时间复杂度取决于()
A.问题的规模B.待处理数据的初态C.A和B
2.从逻辑上可以把数据结构分为()两大类。
A.动态结构、静态结构B.顺序结构、链式结构
C.线性结构、非线性结构D.初等结构、构造型结构
数据的逻辑结构:
指反映数据元素之间的逻辑关系的数据结构,其中的逻辑关系是指数据元素之间的前后件关系,而与他们在计算机中的存储位置无关.逻辑结构包括:
1.集合;
2.线性结构;
3.树形结构;
4.图形结构.
《数据结构》
数据结构课程中数据的逻辑结构分为线性结构和非线性结构.
对于数据结构课程而言,简单地说,线性结构是n个数据元素的有序(次序)集合.它有四个基本特征:
1.集合中必存在唯一的一个"第一个元素";
2.集合中必存在唯一的一个"最后的元素";
3.除最后元素之外,其它数据元素均有唯一的"后继";
4.除第一元素之外,其它数据元素均有唯一的"前驱".
数据结构中线性结构指的是数据元素之间存在着“一对一”的线性关系的数据结构.
如(a1,a2,a3,.,an),a1为第一个元素,an为最后一个元素,此集合即为一个线性结构的集合.
相对应于线性结构,非线性结构的逻辑特征是一个结点元素可能对应多个直接前驱和多个后驱.
常用的线性结构有:
线性表,栈,队列,双队列,数组,串.
关于广义表,是一种非线性的数据结构.
常见的非线性结构有:
树(二叉树等),图(网等).
3.以下属于逻辑结构的是()。
A.顺序表B.哈希表C.有序表有序表是排好序的线性表D.单链表
4.下述哪一条是顺序存储结构的优点?
()
A.存储密度大B.插入运算方便
C.删除运算方便D.可方便地用于各种逻辑结构的存储表示
链式存储结构:
(1)占用额外的空间以存储指针(浪费空间)
(2)存取某个元素速度慢
(3)插入元素和删除元素速度快
(4)没有空间限制,存储元素的个数无上限,基本只与内存空间大小有关.
顺序存储结构:
(1)空间利用率高
(2)存取某个元素速度快
(3)插入元素和删除元素存在元素移动,速度慢,耗时
(4)有空间限制,当需要存取的元素个数可能多于顺序表的元素个数时,会出现"溢出"问题.当元素个数远少于预先分配的空间时,空间浪费巨大.
在存取元素频繁,但删除或插入操作较少的情况宜用顺序表.堆排序,二分查找适宜用顺序表.
5.若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用()存储方式最节省时间。
A.顺序表B.双链表
C.带头结点的双循环链表D.单循环链表
6.某线性表中最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用()存储方式最节省运算时间。
A.单链表B.仅有头指针的单循环链表
C.双链表D.仅有尾指针的单循环链表因为有尾指针,所以时间时间复杂度为O
(1),其他的都要O(n)
7.若某表最常用的操作是在最后一个结点之后插入一个结点或删除最后一个结点。
则采用()存储方式最节省运算时间。
A.单链表B.双链表
C.单循环链表D.带头结点的双循环链表双循环链表能够通过头结点的前驱就是尾结点,能够迅速找到尾结点,然后进行插入和删除操作
8.链表不具有的特点是()
A.插入、删除不需要移动元素B.可随机访问任一元素
C.不必事先估计存储空间D.所需空间与线性长度成正比
9.对于顺序表,访问第i位置结点和增加、删除结点的时间复杂度为()。
A.O(n)O(n)B.O(n)O
(1)
C.O
(1)O(n)D.O
(1)O
10.线性表以链接方式存储时,访问第i位置元素的时间复杂性为()
A.O(i)B.O
(1)C.O(n)D.O(i-1)
11.下面程序段的时间复杂度是 O(n) 。
4
inti=1,k=100;
while(i{k=k+1;i+=2;}12.在单链表L中,指针p所指结点有后继结点的条件是:p->next!=NULL。13.长度为n的顺序表,在其第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1个元素,删除第i个元素(1≤i≤n)时,需向前移动__n-i个元素。14.请写出顺序表的类型定义。15.请写出单链表的类型定义。第2次测验一、选择题1.对于栈操作数据的原则是()。A.先进先出B.后进先出C.后进后出D.不分顺序2.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。A.不确定B.n-i+1C.iD.n-i因为栈的特点是“先进后出”,所以当第一个出栈的是n时,意味着1..(n-1)这些数都在栈内,所以第二个出栈的肯定是n-1,第n个出栈的一定是1.所以,第i个出栈的必定是(n+1-i).3.若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。A.i-j-1B.i-jC.j-i+1D.不确定的B.应该是不确定的;因为他没说要小次性全进完,也没说要一次性全出完,只要进入的序列不变就行了。所以不确定的设I=2,J=3;进入怕方法有好多种,出来的方法也有好多种的,1进,1出,2进,2出,3进,4进,4出,3出;4.有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?()A.543612B.453126C.346521D.2341565.栈在()中应用。A.递归调用B.子程序调用C.表达式求值D.A,B,C6.一个递归算法必须包括()。A.递归部分B.终止条件和递归部分C.迭代部分D.终止条件和迭代部分7.表达式a*(b+c)-d的后缀表达式是()。A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd8.设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。A.线性表的顺序存储结构B.队列C.线性表的链式存储结构D.栈9.用链接方式存储的队列,在进行删除运算时()。A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改10.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。A.(rear-front+m)%mB.rear-front+1C.(front-rear+m)%mD.(rear-front)%m11.循环队列存储在数组A[0..m]中,则入队时的操作为()。A.rear=rear+1B.rear=(rear+1)mod(m-1)C.rear=(rear+1)modmD.rear=(rear+1)mod(m+1)12.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?()A.1和5B.2和4当出队列中删除一个元素,也就是出队,即front搜索+1:=4再插入两个元素,即rear+2=28C.4和2D.5和113.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。A.(rear+1)MODn=frontB.rear=frontC.rear+1=frontD.(rear-l)MODn=front14.栈和队列都是()A.顺序存储的线性结构B.链式存储的非线性结构C.限制存取点的线性结构D.限制存取点的非线性结构15.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是()。A.6B.4C.3D.216.下面关于串的的叙述中,哪一个是不正确的?()A.串是字符的有限序列B.空串是由空格构成的串含0个字符的串为空串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储17.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串B.联接C.匹配D.求串长18.串的长度是指()A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数19.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。A.13B.33C.18D.4020.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。A.BA+141B.BA+180这个问题只要找出元素A[5,8]在以列为主存放时,到第一元素之间总共有多少个元素,所谓列存储是一列存完了,再存下面一列。A[5,8]前面有完整的7列,每死8个元素,共有56个元素,第8列,A[5,8]前共4个元素,总共有60个元素,数组的每个元素长度为3字节共180个字节元素A[5,8]的存储首地址为:BA+((j-1)*8+i-1)*3=BA+180C.BA+222D.BA+22521.有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是()。A.60B.66每个元素要用行号,列号,元素值来表示,由于二维稀疏矩阵的大小都是在256之内,所以行号和列号只需要char来存储。在用三元组表示稀疏矩阵,还要三个成员来记住,矩阵的行数列数,总的元素数,所以所需的字节数是10*(1+1+1)*2+3*2=66C.18000D.3322.已知广义表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)))))getTail(L)得到的是(a,(u,t,w))getTail(getTail(L))t得到的就是((u,t,w))getHead(getTail(getTail(L)))得到的就是(u,t,w)getTail(getHead(getTail(getTail(L))))得到的就是((t,w))getHead(getTail(getHead(getTail(getTail(L)))))得到的就是(t,w)getHead(getHead(getTail(getHead(getTail(getTail(L))))))得到的就是t.这里要注意的是,getHead得到的是一个原子,而getTail得到的却是原子外组成的新的广义表,不管是只有一个元素,但也是一个广义表,而不是直接的元素.23.广义表运算式Tail(((a,b),(c,d)))的操作结果是()。A.(c,d)B.c,dC.((c,d))D.d24.设广义表L=((a,b,c)),则L的长度和深度分别为()。A.1和1B.1和3C.1和2D.2和325.下面说法不正确的是()。A.广义表的表头总是一个广义表B.广义表的表尾总是一个广义表C.广义表难以用顺序存储结构D.广义表可以是一个多层次的结构 第3次测验1.在下述结论中,正确的是()。①只有一个结点的二叉树的度为0;②二叉树的度为2;③二叉树的左右子树可任意交换;④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。A.①②③B.②③④C.②④D.①④2.有关二叉树下列说法正确的是()。A.二叉树的度为2B.一棵二叉树的度可以小于2C.二叉树中至少有一个结点的度为2D.二叉树中任何一个结点的度都为23.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1则T中的叶子数为()。A.5B.6C.7D.8(节点个数)m=(边数)n+1一个度为4的节点对应有4条出边,一个度为3的节点对应有3条出边,一个度为2的节点对应有2条出边,一个度为1的节点对应有条出边,叶子节点没有出边.所以(边数)n=1*4+2*2+3*1+4*1(所有节点的度之和)=15根据(节点个数)m=(边数)n+1所以(节点个数)m=16除去度为1,2,3,和4的结点剩下的就是叶子节点8个叶子节点4.一棵完全二叉树上有1001个结点,其中叶子结点的个数是(501)。A.250B.500C.254D.505E.以上答案都不对设二叉树中度为0的叶子结点个数为n0,度为1结点个数为n1,度为2结点个数为n2,于是n0+n1+n2=1001根据二叉树性质:n0=n2+1,代入得到,2n2+1+n1=1001由于完全二叉树的n1只能是0或者1,为满足2n2+1+n1=1001,n1=0,因此n2=500所以n0=501,即叶子个数是501个5.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有()结点。A.2hB.2h-1节点最小的情况应该是如下:o/\oo/\oo/\oo除根结点外,其他层都是2个结点所以最少有2N-1C.2h+1D.h+16.利用二叉链表存储树,则根结点的右指针是()。A.指向最左孩子B.指向最右孩子C.空树转换为二叉树时,规则是左孩子右兄弟,根没有兄弟,因此右指针为空D.非空7.在下列存储形式中,哪一个不是树的存储形式?()。A.双亲表示法B.孩子链表表示法C.孩子兄弟表示法D.顺序存储表示法8.已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。A.CBEFDA二叉树是:A/\BE/\CD\F所以后序遍历是:CBFDEAB.FEDCBAC.CBEDFAD.不定9.设给定权值总数有n个,其哈夫曼树的结点总数为()。A.不确定B.2nC.2n+1D.2n-1第1次必定是2个叶子组成二叉树,产生1新结点,接下来有2种情况:1.此新结点与原剩下的叶子再组成二叉树又产生1新结点,这样就只有第1次时由2个叶子产生1新结点,以后每次由1叶子与新结点产生新结点,故n个叶子共有2n-1个结点.2.剩下的叶子中又有2个叶子(比第1次产生的新结点权小)结合产生新结点,其它类似,那么必然会由2个都是新结点再产生新结点,所以实际上数量与第1种一样,共有2n-1个.具体证明用一个构造哈夫曼树的算法.10.设无向图的顶点个数为n,则该图最多有()条边。A.n-1B.n(n-1)/2因为每条边可以看作是两个顶点的集合,由于是完全图,所以相当于找n个顶点中取两个点的取法,一共是C(n,2)=n(n-1)/2种C.n(n+1)/2D.0E.n211.一个n个顶点的连通无向图,其边的个数至少为()。A.n-1n个顶点的连通图至少有n-l条边,再少就不连通了,连通是指任意两个顶点之间都有路径,而不要求都有边相连.有路径是指从一个顶点沿着某些边可以到达另一个顶点.B.nC.n+1D.nlogn12.一个有n个顶点的图,最少有()个连通分量,最多有()个连通分量。最少是1个,这种情况下,它本身就是一个连通图;最多是n个,这种情况下,它由n个分散的点组成的一个图。A.0B.1C.n-1D.n13.在一个无向图中,所有顶点的度数之和等于所有边数()倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的()倍。如果是无向图,顶点的度数之和是边数的两倍,这是没问题的,无向图中不讲入度和出度这两个概念.有向图中,任意一条边AB(A->B)都会给A提供一个出度,给B提供一个入度,所以顶点的度之和=2*顶点入度之和=2*顶点出度之和=顶点入度之和+顶点出度之和=边数的两倍.A.1/2B.2C.1D.414.下列哪一种图的邻接矩阵是对称矩阵?()A.有向图B.无向图C.AOV网D.AOE网15.一个有向无环图的拓扑排序序列()是唯一的。A.一定B.不一定第4次测验1.对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()。A.(N+1)/2B.N/2C.ND.[(1+N)*N]/22.下面关于二分查找的叙述正确的是()。A.表必须有序,表可以顺序方式存储,也可以链表方式存储B.表必须有序且表中数据必须是整型,实型或字符型C.表必须有序,而且只能从小到大排列D.表必须有序,且表只能以顺序方式存储3.设有序表的关键字序列为(2,5,9,10,12,19,23,35,47),当用折半查找法查找关键字为23的结点时,经过()次比较后查找成功。A、1B、2C、3D、44.二叉查找树的查找效率与二叉树的((1))有关,在((2))时其查找效率最低。(1):A.高度B.结点的多少C.树型D.结点的位置(2):A.结点太多B.完全二叉树C.呈单支树D.结点太复杂5.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是()。A.(100,80,90,60,120,110,130)B.(100,120,110,130,80,60,90)C.(100,60,80,90,120,110,130)D.(100,80,60,90,120,130,110)6.设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=keyMOD13,散列地址为1的链中有()个记录。A.1B.2C.3D.4因为14,1,27,79四个数MOD13后值都为1,所以散列地址为1的链中有4个记录7.散列表的地址区间为0-16,散列函数为H(K)=Kmod17。采用线性探测法处理冲突,并将关键字序列26,25,72,38,8,18,59依次存储到散列表中。(1)元素59存放在散列表中的地址是()。A.8B.9C.10D.11(2)存放元素59需要搜索的次数是()。A.2B.3C.4D.58.某内排序方法的稳定性是指()。A.该排序算法不允许有相同的关键字记录B.该排序算法允许有相同的关键字记录C.平均时间为0(nlogn)的排序方法D.以上都不对数据序列(2,1,4,9,8,10,6,20)只能是下列排序算法中的()的两趟排序后的结果。A:选择排序的头俩个会是最大的20和10B:冒泡排序最大的或者最小的会在最后一位c:插入排序n次排序前n位是已排序的序列正解d:堆排序明显不是已经明显不是堆9.A.快速排序通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列.根据这个思想,214比10620小,即:快速排序法B.冒泡排序C.选择排序D.插入排序10.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中的变化为(1)8447251521(2)1547258421(3)1521258447(4)1521254784则采用的排序是()。A.选择B.冒泡C.快速D.插入11.对序列{15,9,7,8,20,-1,4}进行排序,经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的是()排序。A.选择B.堆C.直接插入D.冒泡12.下列排序算法中()不能保证每趟排序至少能将一个元素放到其最终的位置上。A.快速排序B.shell排序C.堆排序D.冒泡排序13.下列排序算法中,()算法可能会出现下面情况:在最后一趟开始之前,所有元素都不在其最终的位置上。A.堆排序B.冒泡排序C.快速排序D.插入排序14.一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。A.(38,40,46,56,79,84)B.(40,38,46,79,56,84)C.(40,38,46,56,79,84)快速排序法定义了,以46为基准数,把比它大的放在右边,小的放在左边。所以第一次得到的结果是40,38,46,56,79,84D.(40,38,46,84,56,79)15.下列排序算法中,在待排序数据已有序时,花费时间反而最多的是()排序。A.冒泡B.希尔C.快速因为它是不停往前往后扫描,遇到大的换k,要是已排序,会不停换k,浪费更多时间D.堆
{k=k+1;
i+=2;
}
12.在单链表L中,指针p所指结点有后继结点的条件是:
p->next!
=NULL。
13.长度为n的顺序表,在其第i个元素(1≤i≤n+1)之前插入一个元素时,需向后移动n-i+1个元素,删除第i个元素(1≤i≤n)时,需向前移动__n-i个元素。
14.请写出顺序表的类型定义。
15.请写出单链表的类型定义。
第2次测验
一、选择题
1.对于栈操作数据的原则是()。
A.先进先出B.后进先出C.后进后出D.不分顺序
2.一个栈的输入序列为123…n,若输出序列的第一个元素是n,输出第i(1<=i<=n)个元素是()。
A.不确定B.n-i+1C.iD.n-i因为栈的特点是“先进后出”,所以当第一个出栈的是n时,意味着1..(n-1)这些数都在栈内,所以第二个出栈的肯定是n-1,第n个出栈的一定是1.所以,第i个出栈的必定是(n+1-i).
3.若一个栈的输入序列为1,2,3,…,n,输出序列的第一个元素是i,则第j个输出元素是()。
A.i-j-1B.i-jC.j-i+1D.不确定的
B.应该是不确定的;
因为他没说要小次性全进完,也没说要一次性全出完,只要进入的序列不变就行了。
所以不确定的
设I=2,J=3;
进入怕方法有好多种,出来的方法也有好多种的,
1进,1出,2进,2出,3进,4进,4出,3出;
4.有六个元素6,5,4,3,2,1的顺序进栈,问下列哪一个不是合法的出栈序列?
A.543612B.453126C.346521D.234156
5.栈在()中应用。
A.递归调用B.子程序调用C.表达式求值D.A,B,C
6.一个递归算法必须包括()。
A.递归部分B.终止条件和递归部分
C.迭代部分D.终止条件和迭代部分
7.表达式a*(b+c)-d的后缀表达式是()。
A.abcd*+-B.abc+*d-C.abc*+d-D.-+*abcd
8.设计一个判别表达式中左,右括号是否配对出现的算法,采用()数据结构最佳。
A.线性表的顺序存储结构B.队列
C.线性表的链式存储结构D.栈
9.用链接方式存储的队列,在进行删除运算时()。
A.仅修改头指针B.仅修改尾指针
C.头、尾指针都要修改D.头、尾指针可能都要修改
10.假设以数组A[m]存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为()。
A.(rear-front+m)%mB.rear-front+1
C.(front-rear+m)%mD.(rear-front)%m
11.循环队列存储在数组A[0..m]中,则入队时的操作为()。
A.rear=rear+1B.rear=(rear+1)mod(m-1)
C.rear=(rear+1)modmD.rear=(rear+1)mod(m+1)
12.若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?
A.1和5B.2和4当出队列中删除一个元素,也就是出队,即front搜索+1:
=4再插入两个元素,即rear+2=28C.4和2D.5和1
13.最大容量为n的循环队列,队尾指针是rear,队头是front,则队空的条件是()。
A.(rear+1)MODn=frontB.rear=front
C.rear+1=frontD.(rear-l)MODn=front
14.栈和队列都是()
A.顺序存储的线性结构B.链式存储的非线性结构
C.限制存取点的线性结构D.限制存取点的非线性结构
15.设栈S和队列Q的初始状态为空,元素e1,e2,e3,e4,e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2,e4,e3,e6,e5,e1则栈S的容量至少应该是()。
A.6B.4C.3D.2
16.下面关于串的的叙述中,哪一个是不正确的?
A.串是字符的有限序列B.空串是由空格构成的串含0个字符的串为空串
C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储
17.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()
A.求子串B.联接C.匹配D.求串长
18.串的长度是指()
A.串中所含不同字母的个数B.串中所含字符的个数
C.串中所含不同字符的个数D.串中所含非空格字符的个数
19.设有一个10阶的对称矩阵A,采用压缩存储方式,以行序为主存储,a11为第一元素,其存储地址为1,每个元素占一个地址空间,则a85的地址为()。
A.13B.33C.18D.40
20.设有数组A[i,j],数组的每个元素长度为3字节,i的值为1到8,j的值为1到10,数组从内存首地址BA开始顺序存放,当用以列为主存放时,元素A[5,8]的存储首地址为()。
A.BA+141B.BA+180这个问题只要找出元素A[5,8]在以列为主存放时,到第一元素之间总共有多少个元素,所谓列存储是一列存完了,再存下面一列。
A[5,8]前面有完整的7列,每死8个元素,共有56个元素,第8列,A[5,8]前共4个元素,总共有60个元素,数组的每个元素长度为3字节共180个字节
元素A[5,8]的存储首地址为:
BA+((j-1)*8+i-1)*3=BA+180C.BA+222D.BA+225
21.有一个100*90的稀疏矩阵,非0元素有10个,设每个整型数占2字节,则用三元组表示该矩阵时,所需的字节数是()。
A.60B.66每个元素要用行号,列号,元素值来表示,由于二维稀疏矩阵的大小都是在256之内,所以行号和列号只需要char来存储。
在用三元组表示稀疏矩阵,还要三个成员来记住,矩阵的行数列数,总的元素数,所以所需的字节数是10*(1+1+1)*2+3*2=66C.18000D.33
22.已知广义表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)))))getTail(L)得到的是(a,(u,t,w))
getTail(getTail(L))t得到的就是((u,t,w))
getHead(getTail(getTail(L)))得到的就是(u,t,w)
getTail(getHead(getTail(getTail(L))))得到的就是((t,w))
getHead(getTail(getHead(getTail(getTail(L)))))得到的就是(t,w)
getHead(getHead(getTail(getHead(getTail(getTail(L))))))得到的就是t.
这里要注意的是,getHead得到的是一个原子,而getTail得到的却是原子外组成的新的广义表,不管是只有一个元素,但也是一个广义表,而不是直接的元素.
23.广义表运算式Tail(((a,b),(c,d)))的操作结果是()。
A.(c,d)B.c,dC.((c,d))D.d
24.设广义表L=((a,b,c)),则L的长度和深度分别为()。
A.1和1B.1和3C.1和2D.2和3
25.下面说法不正确的是()。
A.广义表的表头总是一个广义表B.广义表的表尾总是一个广义表
C.广义表难以用顺序存储结构D.广义表可以是一个多层次的结构
第3次测验
1.在下述结论中,正确的是()。
①只有一个结点的二叉树的度为0;
②二叉树的度为2;
③二叉树的左右子树可任意交换;
④深度为K的完全二叉树的结点个数小于或等于深度相同的满二叉树。
A.①②③B.②③④C.②④D.①④
2.有关二叉树下列说法正确的是()。
A.二叉树的度为2B.一棵二叉树的度可以小于2
C.二叉树中至少有一个结点的度为2
D.二叉树中任何一个结点的度都为2
3.设树T的度为4,其中度为1,2,3和4的结点个数分别为4,2,1,1则T中的叶子数为()。
A.5B.6C.7D.8(节点个数)m=(边数)n+1
一个度为4的节点对应有4条出边,
一个度为3的节点对应有3条出边,
一个度为2的节点对应有2条出边,
一个度为1的节点对应有条出边,
叶子节点没有出边.
所以
(边数)n=1*4+2*2+3*1+4*1(所有节点的度之和)=15
根据(节点个数)m=(边数)n+1
(节点个数)m=16
除去度为1,2,3,和4的结点
剩下的就是叶子节点
8个叶子节点
4.一棵完全二叉树上有1001个结点,其中叶子结点的个数是(501)。
A.250B.500C.254D.505E.以上答案都不对设二叉树中度为0的叶子结点个数为n0,度为1结点个数为n1,度为2结点个数为n2,于是n0+n1+n2=1001
根据二叉树性质:
n0=n2+1,代入得到,2n2+1+n1=1001
由于完全二叉树的n1只能是0或者1,为满足2n2+1+n1=1001,n1=0,因此n2=500
所以n0=501,即叶子个数是501个
5.一棵二叉树高度为h,所有结点的度或为0,或为2,则这棵二叉树最少有()结点。
A.2hB.2h-1节点最小的情况应该是如下:
o
/\
oo
除根结点外,其他层都是2个结点
所以最少有2N-1
C.2h+1D.h+1
6.利用二叉链表存储树,则根结点的右指针是()。
A.指向最左孩子B.指向最右孩子C.空树转换为二叉树时,规则是左孩子右兄弟,根没有兄弟,因此右指针为空
D.非空
7.在下列存储形式中,哪一个不是树的存储形式?
()。
A.双亲表示法B.孩子链表表示法
C.孩子兄弟表示法D.顺序存储表示法
8.已知一棵二叉树的前序遍历结果为ABCDEF,中序遍历结果为CBAEDF,则后序遍历的结果为()。
A.CBEFDA二叉树是:
A
BE
CD
\
F
所以后序遍历是:
CBFDEA
B.FEDCBAC.CBEDFAD.不定
9.设给定权值总数有n个,其哈夫曼树的结点总数为()。
A.不确定B.2nC.2n+1D.2n-1第1次必定是2个叶子组成二叉树,产生1新结点,接下来有2种情况:
1.此新结点与原剩下的叶子再组成二叉树又产生1新结点,这样就只有第1次时由2个叶子产生1新结点,以后每次由1叶子与新结点产生新结点,故n个叶子共有2n-1个结点.
2.剩下的叶子中又有2个叶子(比第1次产生的新结点权小)结合产生新结点,其它类似,那么必然会由2个都是新结点再产生新结点,所以实际上数量与第1种一样,共有2n-1个.
具体证明用一个构造哈夫曼树的算法.
10.设无向图的顶点个数为n,则该图最多有()条边。
A.n-1B.n(n-1)/2因为每条边可以看作是两个顶点的集合,由于是完全图,所以相当于找n个顶点中取两个点的取法,一共是C(n,2)=n(n-1)/2种
C.n(n+1)/2D.0E.n2
11.一个n个顶点的连通无向图,其边的个数至少为()。
A.n-1n个顶点的连通图至少有n-l条边,再少就不连通了,连通是指任意两个顶点之间都有路径,而不要求都有边相连.有路径是指从一个顶点沿着某些边可以到达另一个顶点.B.nC.n+1D.nlogn
12.一个有n个顶点的图,最少有()个连通分量,最多有()个连通分量。
最少是1个,这种情况下,它本身就是一个连通图;
最多是n个,这种情况下,它由n个分散的点组成的一个图。
A.0B.1C.n-1D.n
13.在一个无向图中,所有顶点的度数之和等于所有边数()倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的()倍。
如果是无向图,顶点的度数之和是边数的两倍,这是没问题的,无向图中不讲入度和出度这两个概念.
有向图中,任意一条边AB(A->B)都会给A提供一个出度,给B提供一个入度,所以
顶点的度之和=2*顶点入度之和=2*顶点出度之和=顶点入度之和+顶点出度之和=边数的两倍.
A.1/2B.2C.1D.4
14.下列哪一种图的邻接矩阵是对称矩阵?
A.有向图B.无向图C.AOV网D.AOE网
15.一个有向无环图的拓扑排序序列()是唯一的。
A.一定B.不一定
第4次测验
1.对N个元素的表做顺序查找时,若查找每个元素的概率相同,则平均查找长度为()。
A.(N+1)/2B.N/2C.ND.[(1+N)*N]/2
2.下面关于二分查找的叙述正确的是()。
A.表必须有序,表可以顺序方式存储,也可以链表方式存储
B.表必须有序且表中数据必须是整型,实型或字符型
C.表必须有序,而且只能从小到大排列
D.表必须有序,且表只能以顺序方式存储
3.设有序表的关键字序列为(2,5,9,10,12,19,23,35,47),当用折半查找法查找关键字为23的结点时,经过()次比较后查找成功。
A、1B、2C、3D、4
4.二叉查找树的查找效率与二叉树的(
(1))有关,在(
(2))时其查找效率最低。
(1):
A.高度B.结点的多少C.树型D.结点的位置
(2):
A.结点太多B.完全二叉树C.呈单支树D.结点太复杂
5.分别以下列序列构造二叉排序树,与用其它三个序列所构造的结果不同的是()。
A.(100,80,90,60,120,110,130)
B.(100,120,110,130,80,60,90)
C.(100,60,80,90,120,110,130)
D.(100,80,60,90,120,130,110)
6.设有一组记录的关键字为{19,14,23,1,68,20,84,27,55,11,10,79},用链地址法构造散列表,散列函数为H(key)=keyMOD13,散列地址为1的链中有()个记录。
A.1B.2C.3D.4因为14,1,27,79四个数MOD13后值都为1,所以散列地址为1的链中有4个记录
7.散列表的地址区间为0-16,散列函数为H(K)=Kmod17。
采用线性探测法处理冲突,并将关键字序列26,25,72,38,8,18,59依次存储到散列表中。
(1)元素59存放在散列表中的地址是()。
A.8B.9C.10D.11
(2)存放元素59需要搜索的次数是()。
A.2B.3C.4D.5
8.某内排序方法的稳定性是指()。
A.该排序算法不允许有相同的关键字记录
B.该排序算法允许有相同的关键字记录
C.平均时间为0(nlogn)的排序方法
D.以上都不对
数据序列(2,1,4,9,8,10,6,20)只能是下列排序算法中的()的两趟排序后的结果。
A:
选择排序的头俩个会是最大的20和10
B:
冒泡排序最大的或者最小的会在最后一位
c:
插入排序n次排序前n位是已排序的序列正解
d:
堆排序明显不是已经明显不是堆
9.
A.快速排序通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列.
根据这个思想,214比10620小,即:
快速排序法B.冒泡排序C.选择排序D.插入排序
10.对一组数据(84,47,25,15,21)排序,数据的排列次序在排序的过程中的变化为
(1)8447251521
(2)1547258421(3)1521258447(4)1521254784则采用的排序是()。
A.选择B.冒泡C.快速D.插入
11.对序列{15,9,7,8,20,-1,4}进行排序,经一趟排序后的排列为{9,15,7,8,20,-1,4},则采用的是()排序。
A.选择B.堆C.直接插入D.冒泡
12.下列排序算法中()不能保证每趟排序至少能将一个元素放到其最终的位置上。
A.快速排序B.shell排序C.堆排序D.冒泡排序
13.下列排序算法中,()算法可能会出现下面情况:
在最后一趟开始之前,所有元素都不在其最终的位置上。
A.堆排序B.冒泡排序C.快速排序D.插入排序
14.一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为()。
A.(38,40,46,56,79,84)B.(40,38,46,79,56,84)
C.(40,38,46,56,79,84)快速排序法定义了,以46为基准数,把比它大的放在右边,小的放在左边。
所以第一次得到的结果是40,38,46,56,79,84
D.(40,38,46,84,56,79)
15.下列排序算法中,在待排序数据已有序时,花费时间反而最多的是()排序。
A.冒泡B.希尔C.快速因为它是不停往前往后扫描,遇到大的换k,要是已排序,会不停换k,浪费更多时间D.堆
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1