数据结构复习题.docx
- 文档编号:4940220
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:49
- 大小:69.99KB
数据结构复习题.docx
《数据结构复习题.docx》由会员分享,可在线阅读,更多相关《数据结构复习题.docx(49页珍藏版)》请在冰豆网上搜索。
数据结构复习题
数据结构复习题
第一部分:
教材课后作业
第二部分:
分类复习题
一、单选题
1.一个数组元素a[i]与()的表示等价。
A.*(a+i)B.a+iC.*a+iD.&a+i
2.若需要利用形参直接访问实参,则应把形参变量说明为()参数。
A.指针B.引用C.传值D.常值
3.下面程序段的时间复杂度为()。
for(inti=0;i for(intj=0;j A.O(m2)B.O(n2)C.O(m*n)D.O(m+n) 4.执行下面程序段时,执行S语句的次数为()。 for(inti=1;i<=n;i++) for(intj=1;j<=i;j++)S; A.n2B.n2/2C.n(n+1)D.n(n+1)/2 5.一种抽象数据类型包括数据和()两个部分。 A.数据类型B.操作C.数据抽象D.类型说明 6.一个记录r理论上占有的存储空间的大小等于所有域类型长度之和,实际上占有的存储空间的大小即记录长度为()。 A.所有域长度之和B.最大域所占字节长度 C.任意一个域长度D.sizeof(r)的值 7.输出一个二维数组b[m][n]中所有元素值的时间复杂度为()。 A.O(n)B.O(m+n)C.O(n2)D.O(m*n) 8.一个算法的时间复杂度为(3n2+2nlog2n+4n-7)/(5n),其数量级形式的复杂度表示为()。 A.O(n)B.O(nlog2n)C.O(n2)D.O(log2n) 9.某算法的时间代价为T(n)=100n+10nlog2n+n2+10,其时间复杂度为()。 A.O(n)B.O(nlog2n)C.O(n2)D.O (1) 10.某算法仅含程序段1和程序段2,程序段1的执行次数3n2,程序段2的执行次数为0.01n3,则该算法的时间复杂度为()。 A.O(n)B.O(n2)C.O(n3)D.O (1) 11.在二维数组中,每个数组元素同时处于()个向量中。 A.0个B.1个C.2个D.n个 12.多维数组实际上是由嵌套的()实现的。 A.一维数组B.多项式C.三元组表D.简单变量 13.在一个长度为n的顺序表中顺序搜索一个值为x的元素时,在等概率的情况下,搜索成功时的数据平均比较次数为()。 A.nB.n/2C.(n+1)/2D.(n-1)/2 14.在一个长度为n的顺序表中向第i个元素(0≤i≤n-1)位置插入一个新元素时,需要从后向前依次后移()个元素。 A.n-iB.n-i+1C.n-i-1D.i 15.在一个长度为n的顺序表中删除第i个元素(0≤i≤n-1)时,需要从前向后依次前移()个元素。 A.n-iB.n-i+1C.n-i-1D.i 16.在一个长度为n的顺序表中删除一个值为x的元素时,需要比较元素和移动元素的总次数为()。 A.(n+1)/2B.n/2C.nD.n+1 17.在一个长度为n的顺序表的表尾插入一个新元素的渐进时间复杂度为()。 A.O(n)B.O (1)C.O(n2)D.O(log2n) 18.在一个长度为n的顺序表的任一位置插入一个新元素的渐进时间复杂度为()。 A.O(n)B.O(n/2)C.O (1)D.O(n2) 19.在一个长度为n的有序顺序表中搜索值为x元素的时间效率最高的算法的渐进时间复杂度为()。 A.O (1)B.O( )C.O(log2n)D.O(n) 20.在二维数组A[8][10]中,每一个数组元素A[i][j]占用3个存储空间,所有数组元素相继存放于一个连续的存储空间中,则存放该数组至少需要的存储空间是()。 A.80B.100C.240D.270 21.不带头结点的单链表first为空的判定条件是()。 A.first==NULL;B.first->link==NULL; C.first->link==first;D.first! =NULL; 22.带头结点的单链表first为空的判定条件是()。 A.first==NULL;B.first->link==NULL; C.first->link==first;D.first! =NULL; 23.设单链表中结点的结构为(data,link)。 已知指针q所指结点是指针p所指结点的直接前驱,若在*q与*p之间插入结点*s,则应执行的操作是()。 A.s->link=p->link;p->link=s;B.q->link=s;s->link=p; C.p->link=s->link;s->link=p;D.p->link=s;s->link=q; 24.设单链表中结点的结构为(data,link)。 已知指针p所指结点不是尾结点,若在*p之后插入结点*s,则应执行的操作是()。 A.s->link=p;p->link=s;B.p->link=s;s->link=p; C.s->link=p->link;p=s;D.s->link=p->link;p->link=s; 25.设单链表中结点的结构为(data,link)。 若想摘除p->link所指向的结点,则应执行的操作是()。 A.p->link=p->link->link;B.p=p->link;p->link=p->link->link; C.p->link=p;D.p=p->link->link; 26.非空的循环单链表first的尾结点(由p所指向)满足的条件是()。 A.p->link==NULL;B.p==NULL; C.p->link==first;D.p==first; 27.设单循环链表中结点的结构为(data,link),且rear是指向非空的带表头结点的单循环链表的尾结点的指针。 若想删除链表第一个结点,则应执行的操作是()。 A.s=rear;rear=rear->link;deletes; B.rear=rear->link;deleterear; C.rear=rear->link->link;deleterear; D.s=rear->link->link;rear->link->link=s->link;deletes; 28.利用双向链表作线性表的存储结构的优点是()。 A.便于单向进行插入和删除的操作B.便于双向进行插入和删除的操作 C.节省空间D.便于销毁结构释放空间 29.带表头的双向循环链表的空表满足()。 A.first=NULL;B.first->rLink==first C.first->lLink==NULLD.first->rLink==NULL 30.已知L是一个不带表头的单链表,在表首插入结点*p的操作是()。 A.p=L;p->link=L;B.p->link=L;p=L; C.p->link=L;L=p;D.L=p;p->link=L; 31.已知L是带表头的单链表,删除首元结点的语句是()。 A.L=L->link;B.L->link=L->link->link; C.L=L;D.L->link=L; 32.栈的插入和删除操作在()进行。 A.栈顶B.栈底C.任意位置D.指定位置 33.当利用大小为n的数组顺序存储一个栈时,假定用top==n表示栈空,则向这个栈插入一个元素时,首先应执行()语句修改top指针。 A.top++;B.top--;C.top=0;D.top; 34.若让元素1,2,3依次进栈,则出栈次序不可能出现()种情况。 A.3,2,1B.2,1,3C.3,1,2D.1,3,2 35.在一个顺序存储的循环队列中,队头指针指向队头元素的()位置。 A.前一个B.后一个C.当前D.后面 36.当利用大小为n的数组顺序存储一个队列时,该队列的最大长度为()。 A.n-2B.n-1C.nD.n+1 37.从一个顺序存储的循环队列中删除一个元素时,首先需要()。 A.队头指针加一B.队头指针减一 C.取出队头指针所指的元素D.取出队尾指针所指的元素 38.假定一个顺序存储的循环队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。 A.front+1==rearB.rear+1==front C.front==0D.front==rear 39.假定一个链式队列的队头和队尾指针分别为front和rear,则判断队空的条件为()。 A.front==rearB.front! =NULL C.rear! =NULLD.front==NULL 40.设链式栈中结点的结构为(data,link),且top是指向栈顶的指针。 若想在链式栈的栈顶插入一个由指针s所指的结点,则应执行()操作。 A.top->link=s;B.s->link=top->link;top->link=s; C.s->link=top;top=s;D.s->link=top;top=top->link; 41.设链式栈中结点的结构为(data,link),且top是指向栈顶的指针。 若想摘除链式栈的栈顶结点,并将被摘除结点的值保存到x中,则应执行()操作。 A.x=top->data;top=top->link;B.top=top->link;x=top->data; C.x=top;top=top->link;D.x=top->data; 42.设循环队列的结构是 typedefstruct{ DataTypedata[MaxSize]; intfront,rear; }Queue; 若有一个Queue类型的队列Q,试问判断队列满的条件应为()。 A.Q.front==Q.rear;B.Q.front-Q.rear==MaxSize; C.Q.front+Q.rear==MaxSize;D.Q.front==(Q.rear+1)%MaxSize; 43.设循环队列的结构是 constintMaxSize=100; typedefintDataType; typedefstruct{ DataTypedata[MaxSize]; intfront,rear; }Queue; 若有一个Queue类型的队列Q,则应用()表达式计算队列元素的个数。 A.(Q.rear-Q.front+MaxSize)%MaxSize;B.Q.rear-Q.front+1; C.Q.rear-Q.front-1;D.Q.rear-Qfront; 44.树中所有结点的度之和等于所有结点数加()。 A.0B.1C.–1D.2 45.在一棵树中,()没有前驱结点。 A.树枝结点B.叶子结点C.树根结点D.空结点 46.在一棵二叉树的二叉链表中,空指针域数等于非空指针域数加()。 A.2B.1C.0D.–1 47.在一棵二叉树中,如果叶子结点数为n0,度为2的结点数为n2,则有()。 A.n0=n2+1B.n0=n2C.n0=n2-1D.n0=2*n2 48.在一棵具有n个结点的二叉树的第i层上(假定根结点为第0层,i大于等于0而小于等于树的高度),最多具有()个结点。 A.2iB.2i+1C.2i-1D.2n 49.在一棵高度为h(假定树根结点的高度为0)的二叉树中,所含结点个数至少为()。 A.hB.h+1C.h-1D.2h 50.一棵具有35个结点的完全二叉树的高度为()。 假定树根结点的高度为0。 A.5B.6C.7D.8 51.树的逻辑结构表示方法包括()。 A.树形表示法、文氏图表示法、双亲表示法、括号表示法 B.树形表示法、文氏图表示法、凹入表示法、括号表示法 C.括号表示法、文氏图表示法、凹入表示法、孩子链表示法 D.树形表示法、双亲表示法、孩子链表示法、孩子兄弟链表示法 52.在一棵完全二叉树中,若编号为i的结点存在左孩子,则左孩子结点的编号为()。 假定树根结点的编号为0。 A2iB2i-1C2i+1D2i+2 53.在一棵完全二叉树中,假定树根结点的编号为0,对于编号为i(i>0)的结点,其双亲结点的编号为()。 A.(i+1)/2B.(i-1)/2C.i/2D.i/2-1 54.在一棵树的孩子兄弟链表示法中,一个结点的右孩子是该结点的()结点。 A.兄弟B.父子C.祖先D.子孙 55.在一棵树的静态双亲表示中,每个存储结点包含()个域。 A1B2C3D4 56.已知一棵二叉树的括号表示为a(b(c),d(e(,g(h)),f)),则该二叉树的高度为()。 假定树根结点的高度为0。 A.3B.4C.5D.6 57.已知一棵树的边集表示为{,,, 假定树根结点的高度为0。 A.2B.3C.4D.5 58.利用n个值作为叶结点的权生成的霍夫曼树中共包含有()个结点。 A.nB.n+1C.2*nD.2*n-1 59.利用3,6,8,12这四个值作为叶子结点的权,生成一棵霍夫曼树,该树的带权路径长度(WPL)为()。 A55B29C58D38 60.一棵树的括号表示为a(b,c(e,f(g)),d),当用孩子兄弟链表表示时,右指针域非空的结点个数为()。 A1B2C3D4 61.对具有n个元素的有序表进行折半搜索,则搜索任一元素的时间复杂度为()。 A.O(n)B.O(n2)C.O (1)D.O(log2n) 62.在一棵高度为h的具有n个元素的二叉排序树中,搜索一个元素的最大搜索长度为()。 A.nB.log2nC.(h+1)/2D.h+1 63.从具有n个结点的二叉排序树中搜索一个元素时,在等概率情况下进行成功搜索的时间复杂度大致为()。 A.O(n)B.O (1)C.O(log2n)D.O(n2) 64.设G1=(V1,E1)和G2=(V2,E2)为两个图,如果V1V2,E1E2,则称()。 A.G1是G2的子图B.G2是G1的子图 C.G1是G2的连通分量D.G2是G1的连通分量 65.有向图的一个顶点的度数等于该顶点的()。 A.入度B.出度C.入度与出度之和D.(入度+出度)/2 66.一个连通图的生成树是包含图中所有顶点的一个()。 A.极小子图B.连通子图C.极小连通子图D.无环子图 67.n个顶点的连通图中至少含有()。 A.n-1条边B.n条边C.n(n-1)/2条边D.n(n-1)条边 68.n个顶点的强连通图中至少含有()。 A.n-1条有向边B.n条有向边C.n(n-1)/2条有向边D.n(n-1)条有向边 69.在一个带权连通图G中,权值最小的边一定包含在G的()中。 A.最小生成树B.生成树 C.广度优先生成树D.深度优先生成树 70.对于有向图,其邻接矩阵表示比邻接表表示更易于()。 A.查找一条边B.求一个顶点的邻接点 C.进行图的深度优先遍历D.进行图的广度优先遍历 71.与邻接矩阵相比,邻接表更适合于存储()。 A.无向图B.连通图C.稀疏图D.稠密图 72.为了实现图的广度优先遍历,BFS算法使用的一个辅助数据结构是()。 A.栈B.队列C.二叉树D.树 73.设无向图的顶点个数为n,则该图最多有()条边。 A.n-1B.n(n-1)/2C.n(n+1)/2D.n(n-1) 74.在一个无向图中,所有顶点的度数之和等于所有边数的()倍。 A.3B.2C.1D.1/2 75.图的深度优先搜索类似于树的()遍历。 A.先序B.中序C.后序D.层次 76.图的广度优先搜索类似于树的()遍历。 A.先序B.中序C.后序D.层次 77.若待排序对象序列在排序前已基本按排序码递增顺序排列,则采用()方法比较次数最少。 A.直接插入排序B.快速排序C.归并排序D.直接选择排序 78.对待排序的元素序列进行划分,将其分为左、右两个子序列,再对两个子序列施加同样的排序操作,直到子序列为空或只剩一个元素为止。 这样的排序方法是()。 A.直接选择排序B.直接插入排序C.快速排序D.起泡排序 79.一个对象序列的排序码为{46,79,56,38,40,84},采用快速排序(以位于最左位置的对象为基准)所得到的第一次划分结果为()。 A.{38,46,79,56,40,84}B.{38,79,56,46,40,84} C.{40,38,46,79,56,84}D.{38,46,56,79,40,84} 80.散列函数应该有这样的性质,即函数值应当以()概率取其值域范围内的每一个值。 A.最大B.最小C.平均D.同等 选择题参考答案: 1.A2.B3.C4.D5.B6.D7.D8.A9.C10.C 11.C12.A13.C14.A15.C16.C17.B18.A19.C20.C 21.A22.B23.B24.D25.A26.C27.D28.B29.B30.C 31.B32.A33.B34.C35.A36.B37.A38.D39.D40.C 41.A42.D43.A44.C45.C46.A47.A48.A49.B50.A 51.B52.C53.B54.A55.B56.B57.B58.D59.A60.C 61.D62.D63.C64.A65.C66.C67.A68.B69.A70.A 71.C72.B73.B74.B75.A76.D77.A78.C79.C80.D 二、填空题 1.数据是________的载体,它能够被计算机程序识别、存储和加工处理。 2.数据结构包括逻辑结构、________和数据的运算三个方面。 3.数据结构的逻辑结构包括线性结构和________结构两大类。 4.数据结构的存储结构包括顺序、________、索引和散列等四种。 5.基本数据类型是计算机已经实现了的________。 6.抽象数据类型的特点是________、信息隐蔽、使用与实现分离。 7.算法的一个特性是________,即算法必须执行有限步就结束。 8.二维数组是一种非线性结构,其中的每一个数组元素最多有_________个直接前驱(或直接后继)。 9.若设一个nn的矩阵A的开始存储地址LOC(0,0)及元素所占存储单元数d已知,按行存储时其任意一个矩阵元素a[i][j]的存储地址为_________。 10.线性表是由n(n≥0)个_________组成的有限序列。 11.若设串S=“documentHash.doc\0”,则该字符串S的长度为_________。 12.链表是一种采用存储结构存储的线性表。 13.链表只适用于查找。 14.在链表中进行插入和操作的效率比在顺序存储结构中进行相同操作的效率高。 15.链表对于数据元素的插入和删除不需要移动结点,只需要改变相应结点的__________的值。 16.链式存储表示的结点存储空间一般在程序的运行过程中进行动态地_______和释放。 17.单链表中逻辑上相邻的结点而在物理位置上_______相邻。 18.在单链表中,除了表头结点外,任意结点的存储位置由其直接_____结点的指针域的值所指示。 19.在单链表设置表头结点的作用是插入和删除表中第一个元素时不必对________进行特殊处理。 20.若设L是指向带表头的单链表,语句L->link=L->link->link的作用是________单链表中的第一个结点。 21.在双向链表中,每个结点除了数据域外,还有两个指针域,它们分别指向_______________。 22.线性表的链接存储只能通过________顺序访问。 23.链表与顺序表、索引表、散列表等都是数据逻辑结构的__________表示。 24.栈是一种限定在表的一端进行插入和删除的线性表,又被称为___________表。 25.队列是一种限定在表的一端插入,在另一端删除的线性表,它又被称为________表。 26.向一个链式栈插入一个新结点时,首先把栈顶指针的值赋给新结点的指针域,然后把新结点的存储位置赋给________。 27.队列的删除操作在________进行。 28.向一个顺序栈插入一个元素时,首先使________后移一个位置,然后把待插入元素写入到这个位置上。 29.若设顺序栈的最大容量为MaxSize,top==-1表示栈空,则判断栈满的条件是________________。 30.当用长度为MaxSize的数组顺序存储一个栈时,若用top==MaxSize表示栈空,则表示栈满的条件为________。 31.向一个循环队列中插入元素时,需要首先移动________指针,然后再向所指位置写入新元素。 32.向一个栈顶指针为top的链式栈中插入一个新结点*p时,应执行________和top=p操作。 33.在一个链式队列中,若队头指针与队尾指针的值相同,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 复习题