大数据结构习题及问题详解.docx
- 文档编号:11919683
- 上传时间:2023-04-16
- 格式:DOCX
- 页数:80
- 大小:46.21KB
大数据结构习题及问题详解.docx
《大数据结构习题及问题详解.docx》由会员分享,可在线阅读,更多相关《大数据结构习题及问题详解.docx(80页珍藏版)》请在冰豆网上搜索。
大数据结构习题及问题详解
第1章数据结构
一、选择题
1.算法指的是()。
A计算机程序B解决问题的计算方法
C排序方法D解决问题的有限运算序列
2.在数据的树形结构中,数据元素之间为()的关系。
A0:
0B1:
1C1:
nDm:
n
3.数据的存储结构包括顺序、、散列和()4种基本类型。
A索引B数组C集合D向量
4.一个数组元素a[i]与()的表示等价。
A&a+iB*(a+i)C*a+iDa+i
5.若只需要利用形参间接访问实参指针所指向的对象,而形参本身具有相应的存储空间,则应把形参变量说明为()参数。
A指针B引用C值D指针引用
6.若只需要利用形参实现对实参值的拷贝,函数体操作形参时与实参无关,则应把形参变量说明为()参数。
A指针B引用C值D指针引用
7.下面程序的时间复杂性的量级为()。
inti=0,s1=,s2=0;
while(i++ {if(i%2)s1+=i; elses2+=i; } A.O (1)B.O(1bn)C.O(n)D.O(2n) 8.下面程序段的时间复杂度为()。 for(inti=0;i for(intj=0;j a[i][j]=i*j; A.O(m2)B.O(n2)C.O(m+n)D.O(m*n) 9.执行下面程序段时,S语句的执行次数为()。 for(inti=1;i<=n;i++) for(intj=1,j<=i;j++) S; A.n(n-1)/2B.n(n+1)/2C.n2/2D.n 10.在一个长度为n的顺序存储结构的线性表中,向第i个元素(1≤i≤n+1)位置插入一个元素时,需要从后向前依次后移()个元素。 A.n-iB.n-i+lC.n-i-lD.i 11.在一个长度为n的顺序存储结构的线性表中,删除第i个元素(1≤i≤n+1)时,需要从前向后依次后移()个元素。 A.n-iB.n-i+lC.n-i-lD.i 12.在一个长度为n的线性表中,删除值为x的元素时需要比较元素和移动元素的总次数为()。 A.(n+1)/2B.n/2C.nD.n+1 13.在一个顺序表的表尾插入一个元素的时间复杂度为()。 A.O(n)B.O (1)C.O(n*n)D.O(lbn) 14.在一个顺序表中的任何位置插入一个元素的时间复杂度为()。 A.O(n)B.O(n/2)C.O (1)D.O(n2) 15.在一个单链表中删除p所指向结点的后继结点时,其算法的时间复杂度为()。 A.O(n)B.O(n/2)C.O (1)D.O(n2) 16.线性表的链式存储比顺序存储更有利于进行()操作。 A.查找B.表尾插入和删除 C.按值插入和删除D.表头的插入和删除 17.线性表的顺序存储比链式存储更有利于进行()操作。 A.查找B.表尾插入和删除 C.按值插入和删除D.表头的插入和删除 18.在一个单链表中,若要在P所指向的结点之后插入一个新结点,则需要相继修改()个指针域的值. A.1B.2C.3D.4 19.在一个带头结点的循环双向链表中,若要在P所指向的结点之前插入一个新结点,则需要相继修改()个指针域的值。 A.2B.3C.4D.6 20.在一个表头指针为ph的单链表中,若要向表头插入一个由指针p指向的结点,则应执行()操作。 A.ph=p;p->next=ph;B.p->next=ph;ph=p; C.p->next=ph;p=ph;D.p->next=ph->next;ph->next=p; 21.在一个表头指针为ph的单链表中,若要在指针q所指结点的后面插入一个由指针p所指向的结点,则执行()操作。 A.q->next=p->next;p->next=q;B.p->next=q->next;q=p; C.q->next=p->next;p->next=q;D.p->next=q->next;q->next=p; 22.在一个单链表HL中,若要删除由指针q所指向结点的后继结点(若存在的话),则执行()操作。 A.p=q->next;p->next=q->next;B.p=q->next;q->next=p; C.p=q->next;q->next=p->next;D.q->next=q->next->next;q->next=q; 23.在一个带头结点的循环双向链表中,若要在指针p所指向的结点之后插入一个q指针所指向的结点,则需要对q->next赋值为()。 A.P->priorB.p->next C.p->next->nextD.p->prior->prior 24.在一个带头结点的循环双向链表中,若要在指针p所指向的结点之前插入一个q指针所指向的结点,则需要对p->prior->next赋值为()。 A.qB.pC.p->nextD.p->prior 25.在一个带头结点的循环双向链表中,若要删除指针p所指向的结点则执行()操作。 A.p->prior->next=p->next;p->next->prior=p->prior; B.p->next->prior=p;p->next=p->next->next; C.p->prior->next=p;p->next=p->next->prior; D.p=p->next;p->prior->next=p->prior; 26.栈的插入和删除操作在()进行。 A.栈顶B.栈底C.任意位置D.指定位置 27.当利用大小为N的数组顺序存储一个栈时,假定用top==N表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。 A.top++B.top--C.top=0D.top=N-1 28.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,用top=N+1表示栈空,该数组所存储的栈的最大长度为N,则表示栈满的条件为()。 A.top==1B.top==-1C.top=0D.top=N-1 29.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,用top==-1表示栈空,并已知栈未满,当元素x进栈时所执行的操作为()。 A.a[--top]=xB.a[top--]=xC.a[++top]=xD.a[top++]=x 30.假定利用数组a[N]顺序存储一个栈,用top表示栈顶指针,用top==-1表示栈空,并已知栈未空,当退栈并返回栈顶元素时所执行的操作为()。 Areturna[--top]Breturna[top--]Creturna[++top]Dreturna[top++] 31.假定一个链式栈的栈顶指针用top表示,该链式栈为空的条件()。 A.top! =NULL;B.top==top->next;C.top==NULL;D.top! =top->next; 32.假定一个链式栈的栈顶指针用top表示,每个结点结构为,当p所指向的结点进栈时,执行的操作为()。 A.p->next=top;top=top->next;B.top=p;p->next=top; C.p->next=top->next;top->next=p;D.p->next=top;top=p; 33.假定一个链式栈的栈顶指针用top表示,每个结点结构为,退栈时所执行的操作为()。 A.top->next=top;B.top=top->data; C.top=top->next;D.top->next=top->next->next; 34.若让元素1,2,3,4依次进栈,则出栈次序不可能出现()的情况。 A.3,2,1,4B.2,1,4,3 C.4,3,2,1D.1,4,2,3. 35.在一个顺序循环队列中,队首指针指向队首元素的()位置。 A前一个B后一个C当前D最后 36.当利用大小为N的数组循环存储一个队列时,该队列的最大长度为()。 A.N-2B.N-1C.ND.N+1 37.从一个顺序循环队列中删除元素时,首先需要()。 A.前移队首指针B.后移队首指针 C.取出队首指针所指位置上的元素D.取出队尾指针所指位置上的元素 38.假定一个顺序循环队列的队首和队尾指针分别用f和r表示,则判断队空的条件为()。 A.f+1==rB.r+1==fC.f==0D.f==r 39.假定一个顺序循环队列存储于数组a[N],其队首和队尾指针分别用f和r表示,则判断队满的条件为()。 A.(r-1)%N==fB.(r+1)%N==fC.(f-1)%N==rD.(f+1)%N==r 40.假定利用数组a[N]循环顺序存储一个队列,其队首和队尾指针分别用f和r表示,并已知队列未满,当元素x入列时所执行的操作为()。 A.a[++r%N]=xB.a[r++%N]=xC.a[--r%N]=xD.a[r--%N]=x 41.假定利用数组a[N]循环顺序存储一个队列,其队首和队尾指针分别用f和r表示,并已知队列未空,当出列并返回队首元素时所执行的操作为()。 A.returna[++r%N]B.returna[--r%N]C.returna[++f%N]D.returna[f++%N] 42.假定一个链式队列的队首和队尾指针分别为front和rear,则判断队空的条件为()。 A.front==rearB.front! =NULLC.rear! =NULLD.front==NULL 43.假定一个链式队列的队首和队尾指针分别为front和rear,每个结点结构为,当出列时所进行的操作为()。 A.front=front->nextB.rear=rear->next C.front->next=rear;rear=rear->next D.front=front->next;front->next=rear; 44.假定一个带头结点的循环链式队列的队首和队尾指针分别用front和rear表示,则判断对空的条件为()。 A.front=rear->nextB.rear==NULLC.front==NULLD.front==rear 45.假定一个链式队列的队首和队尾指针分别为front和rear,每个结点结构为包含值域data和指针域next,则使p所指结点入列所执行的操作为()。 A.p->next=NULL;rear=rear->next=p; B.p->next=rear->next;rear=rear->next=p; C.p->next=front;front=p; D.p->next=front->next;front->next=p; 46.在一个长度为N的数组空间中,循环顺序存储着一个队列,该队列的队首和队尾指针分别用front和rear表示,则该队列中数组元素个数为()。 A.(rear-front)%NB.(rear-front+N)%N C.(rear+N)%ND.(front+N)%N 47.二维数组A[12,10]采用行优先存储,每个数据元素占用4个存储单元,该数组的首地址(即A[0,0]的地址)为1200,则A[6,5]的地址为()。 A.1400B.1404C.1372D.1460 48.有一个M×N的矩阵A,若采用行优先进行顺序存储,每个元素占用8个字节,则Aij(1≤i≤M,1≤j≤N)元素的相对字节地址(相对首元素地址而言)为()。 A.((i-1)×N+j)×8B.((i-1)×N+j-1)×8 C.(i×N+j-1)×8D.((i-1)×N+j+1)×8 49.有一个N×N的下三角矩阵A,若采用行优先进行顺序存储,每个元素占用k个字节,则Aij(1≤i≤N,1≤j≤i)元素的相对字节地址(相对首元素地址而言)为()。 A.(i×(i+1)/2+j-1)×4B.(i×i/2+j)×4 C.(i×(i-1)/2+j-1)×4D.(i×(i-1)/2+j)×4 50.树中所有结点的度等于所有结点数加()。 A.0B.1C.-1D.2 51.在一棵树中,()没有前驱结点。 A.树枝结点B.叶子结点C.树根结点D.空结点 52.在一棵树中,每个结点最多有()个前驱结点。 A.0B.1C.2D.任意多个 53.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。 A.2B.1C.0D.-1 54.在一棵具有n个结点的二叉树中,所有结点的空子树个数等于()。 A.nB.n-1C.n+1D.2n 55.在一棵具有n个结点的二叉树的第i层上,最多具有()个结点。 A.2iB.2i+1C.2i-1D.2n 56.在一棵深度为h的完全二叉树中,所含结点个数不小于()。 A.2hB.2h+1C.2h-1D.2h-1 57.在一棵深度为h的完全二叉树中,所含结点个数不大于()。 A.2hB.2h+1C.2h-1D.2h-1 58.在一棵具有35个结点的完全二叉树中,该树的深度为()。 A.6B.7C.5D.8 59.在一棵完全二叉树中,若编号为i的结点存在左孩子,则左孩子结点编号为()。 A.2iB.2i-1C.2i+1D.2i+2 60.在一棵完全二叉树中,若编号为i的结点存在右孩子,则右孩子结点编号为()。 A.2iB.2i-1C.2i+1D.2i+2 61.在一棵完全二叉树中,对于编号为i(i>1)的结点其双亲结点的编号为()。 A.(i+1)/2B.(i-1)/2C.i%2D.i/2 62.有如图1.1所示的一棵二叉树,则该二叉树所含单支结点数为()。 A.2B.3C.4D.5 63.有如图1.2所示的一棵二叉树,则该二叉树的中序遍历序列为()。 A.ABCDEFGB.CDBGFEAC.CBDAEGFD.ABECDFG 64.有如图1.2所示的一棵二叉树,则该二叉树的先序遍历序列为()。 A.ABCDEFGB.CDBGFEAC.CBDAEGFD.ABECDFG 65.有如图1.2所示的一棵二叉树,则该二叉树的后序便利序列为()。 A.ABCDEFGB.CDBGFEAC.CBDAEGFD.ABECDFG 66.利用n个值生成的哈夫曼树中共有()个结点。 A.nB.n+1C.2nD.2n-1 67.利用3,6,8,12这4个值作为叶子结点的权,生成一棵哈夫曼树,该树的带权路径长度为()。 A.55B.29C.58D.38 68.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有的入度数之和为()。 A.sB.s-1C.s+1D.n 69.在一个具有n个顶点的有向图中,若所有顶点的出度数之和为s,则所有的度数之和为()。 A.sB.s-1C.s+1D.2s 70.在一个具有n个顶点的无向图中,若具有e条边,则所有顶点的度数为()。 A.nB.eC.n+eD.2e 71.在一个具有n个顶点的无向完全图中,所含的边数为()。 A.nB.n(n-1)C.n(n-1)/2D.n(n+1)/2 72.在一个具有n个顶点的有向完全图中,所含的边数为()。 A.nB.n(n-1)C.n(n-1)/2D.n(n+1)/2 73.在一个具有n个顶点的无向连通图中,它包含的连通分量的个数为()。 A.0B.1C.nD.n+1 74.若有一个图中包含k个连通分量,若按照深度优先搜索的方法访问所有顶点,则必须调用()次深度优先搜索遍历的算法。 A.kB.1C.k-1D.k+1 75.若要把n个顶点连接为一个连通图,则至少需要()条边。 A.nB.n+1C.n-1D.2n 76.在一个具有n个顶点和e条边的无向图的邻接矩阵中,表示边存在的元素(又称为有效元素)的个数为()。 A.nB.neC.eD.2e 77.在一个具有n个顶点和e条边的有向图的邻接矩阵中,表示边存在的元素的个数为()。 A.nB.neC.eD.2e 78.在一个具有n个顶点和e条边的无向图的邻接矩阵中,边结点的个数为()。 A.nB.neC.eD.2e 79.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应邻接表中该顶点单链表的边数结点为()。 A.k1B.k2C.k1-k2D.k1+k2 80.对于一个有向图,若一个顶点的度为k1,出度为k2,则对应逆邻接表中该顶点单链表的边数结点为()。 A.k1B.k2C.k1-k2D.k1+k2 81.对于一个无向图,下面()的说法是正确的。 A.每个顶点的入度等于出度B.每个顶点的度等于入度和出度之和 C.每个顶点的入度为0D.每个顶点的出度为0 82.在一个有向图的邻接表中,每个顶点单链表中结点的个数等于该顶点的()。 A.出边数B.入边数C.度数D.度数减一 83.若一个图的边集为{(A,B)(A,C)(B,D)(C,F)(D,E)(D,F)},则从顶点A开始对该图进行深度优先搜索,得到的顶点序列可能为()。 A.ABCFDEB.ACFDEBC.ABDCFED.ABDFEC 84.若一个图的边集为{(A,B)(A,C)(B,D)(C,F)(D,E)(D,F)},则从顶点A开始对该图进行广度优先搜索,得到的顶点序列可能为()。 A.ABCDEFB.ABCFDEC.ABDCEFD.ACBFDE 85.若一个图的边集{(1,2)(1,4)(2,5)(3,1)(3,5)(4,3)},则从顶点1开始对该图进行深度优先搜索,得到的顶点序列可能为()。 A.1,2,5,4,3B.1,2,3,4,5C.1,2,5,3,4D.1,4,3,2,5 86.若一个图的边集{(1,2)(1,4)(2,5)(3,1)(3,5)(4,3)},则从顶点1开始对该图进行广度优先搜索,得到的顶点序列可能为()。 A.1,2,3,4,5B.1,2,4,3,5C.1,2,4,5,3D.1,4,2,5,3 87.由一个具有n个顶点的连通图生成的最小树中有()条边。 A.nB.n-1C.n+1D.2n 88.若查找每一个元素的概率相等,则在长度为n的顺序表上查找任一元素的平均查找长度为()。 A.nB.n+1C.(n-1)/2D.(n+1)/2 89.对长度为n的单链有序表,若查找每个元素的概率相等,则查找任一个元素的平均查找长度为()。 A.n/2B.(n+1)/2C.(n-1)/2D.n/4 90.对于长度为9的顺序存储的有序表,若采用二分查找,在等概率情况下的平均查找长度为()的值除以9。 A.20B.18C.25D.22 91.对于长度为18的顺序存储的有序表,若采用二分查找,则查找第15个元素的查找长度为()。 A.2B.3C.4D.6 92.对于顺序存储的有序表(5,12,20,26,37,42,46,50,64),若采用二分查找,则查找元素26的查找长度为()。 A.2B.3C.4D.5 93.在分块查找中,若用于保存数据元素的主表长度为n,它被分为k个子表,每个子表的长度均为n/k,若用顺序查找确定块,则分块查找的平均查找长度为()。 A.n+kB.k+n/kC.(k+n/k)/2D.(k+n/k)/2+1 94.在分块查找中,若用于保存数据元素的主表长度为144,它被分为12个子表,每个子表的长度均为12,若用顺序查找确定块,则分块查找的平均查找长度为()。 A.13B.24C.12D.79 95.在一棵深度为h的具有n个元素的二叉排序树中,查找所有元素的最长查找长度为()。 A.nB.lbnC.(h+1)/2D.h 96.在一棵平衡二叉排序树中,每个结点的平衡因子的取值围是()。 A.-1~1B.-2~2C.1~2D.0~1 97.若根据查找表(23,44,36,48,52,73,64,58)建立线性哈希表,采用H(K)=K%13计算哈希地址,则元素64的哈希地址为()。 A.4B.8C.12D.13 98.若根据查找表(23,44,36,48,52,73,64,58)建立线形哈希表,采用H(K)=K%13计算哈希地址,则哈希地址为3的元素个数为()。 A.1B.2C.3D.4 99.若根据查找表建立长度为m的线性哈希表,采用线性探测再哈希法处理冲突,假定对一个元素第一次计算的哈希地址为d,则下一次的哈希地址为()。 A.dB.d+1C.(d+1)/mD.(d+1)%m 100.在采用线性探测再哈希法处理冲突的线性哈希表上,假定装填因子a的值为0.5,则查找任一个元素的平均查找长度为()。 A.1B.1.5C.2D.2.5 101.在哈希查找中,平均查找长度主要与()有关。 A.哈希表长度B.哈希元素个数C.装填因子D.处理冲突方法 102.若对n个元素进行直接插入排序,则进行第i趟排序过程前,有序表中元素的个数为()。 A.iB.i+1C.i-1D.1 103.若对n个元素进行直接插入排序,在进行第i趟排序时,为寻找插入位子最多需要进行()次元素的比较,假定第0号元素放有待查的键值。 A.iB.i-1C.i+1D.1 104.若对n个元素进行直接插入排序,在进行第i趟排序时,假定元素r[i+1]的插入位置为r[j],则需要移动元素的次数为()。 A.j-iB.i-j-1C.i-jD.i-j+1 105.若对n个元素进行直接插入排序,在进行任意一趟排序的过程中,为寻找插入位置而需要的时间复杂度为()。 A.O (1)B.O(n)C.O(n2)D.O(lbn) 106.在对n个元素进行直接插入排序的过程中,共需要进行()趟。 A.nB.n+1C.n-1D.2n 107.对n个元素进行直接插入排序的时间复杂度为()。 A.O (1)B.O(n)C.O(n2)D.O(lbn) 108.在对n个元素进行冒泡排序的过程中,第一趟排序至多进行()对相邻元素之间的交换。 A.nB.n-1C.n+1D.n/2 109.在对n个元素进行冒泡排序的过程中,最坏情况下的时间复杂度为()。 A.O (1)B.O(lbn)C.O(n2)D.O(n) 110.在对n个元素进行冒泡排序的过程中,至多需要()趟完成。 A.1B.nC.n-1D.n/2 111.在对n个元素进行快速排序的过程中,最好情况下需要进行()趟。 A.nB.n/2C.lbnD.2n 112.在对n个元素进行快速排序的过程中,最坏情况下需要进行()趟。 A.nB.n-1C.n/2D.lbn 113.对下列4个序列进行快速排序,各以第一个元素为基准进行第一次划分,则在该次划分过程中需要移动元素次数最多的序列为()。 A.1,3,5,7,9B.9,7,5,3,1C.5,3,1,7,9D.5,7,9,1,3 114.假定对元素序列(7,3,5,9,1,12,8,15)进行快
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题 问题 详解