数据结构各习题.docx
- 文档编号:28042539
- 上传时间:2023-07-07
- 格式:DOCX
- 页数:22
- 大小:101.05KB
数据结构各习题.docx
《数据结构各习题.docx》由会员分享,可在线阅读,更多相关《数据结构各习题.docx(22页珍藏版)》请在冰豆网上搜索。
数据结构各习题
数据结构各章习题
第1章绪论
一、名词解释
数据 数据项 数据元素 数据结构数据逻辑结构 数据物理结构 算法算法的时间复杂性
二、单项选择题
1.数据结构是一门研究非数值计算的程序设计问题中,数据元素的①、数据信息在计算机中的②以及一组相关的运算等的课程。
①A.操作对象 B.计算方法 C.逻辑结构 D.数据映象
②A.存储结构B.关系C.运算D.算法
2.数据结构DS(DataStruct)可以被形式地定义为DS=(D,R),其中D是①的有限集合,R是D上的②有限集合。
①A.算法B.数据元素C.数据操作D.数据对象
②A.操作B.映象C.存储D.关系
3.在数据结构中,从逻辑上可以把数据结构分成。
A.动态结构和静态结构B.紧凑结构和非紧凑结构
C.线性结构和非线性结构D.内部结构和外部结构
4.算法分析的目的是①,算法分析的两个主要方面是②。
①A.找出数据结构的合理性B.研究算法中的输入和输出的关系
C.分析算法的效率以求改进D.分析算法的易懂性和文档性
②A.空间复杂性和时间复杂性B.正确性和简明性
C.可读性和文档性D.数据复杂性和程序复杂性
5.算法指的是。
A.计算方法B.排序方法C.解决问题的有限运算序列D.调度方法
6.数据在计算机存储器内表示时,物理地址与逻辑地址不相同的,称之为()。
A.存储结构B.逻辑结构
C.链式存储结构D.顺序存储结构
三、填空题(将正确的答案填在相应的空中)
1.数据逻辑结构包括、、和四种类型
2.在线性结构中,第一个结点前驱结点,其余每个结点有且只有个前驱结点;最后一个结点后续结点,其余每个结点有且只有个后续结点。
3.在树形结构中,树根结点没有结点,其余每个结点有且只有个直接前驱结点,叶子结点没有结点,其余每个结点的直接后续结点可以。
4.在图形结构中,每个结点的前驱结点数和后续结点数可以。
5.线性结构中元素之间存在关系,树形结构中元素之间存在关系,图形结构中元素之间存在关系。
6.算法的五个重要特性是____,____,____,____,____。
四、分析下列算法的时间复杂度:
1.sum=0;
for(i=1;i<=n;i++)
{sum=sum+i;}
2.i=1;
while(i<=n)
i=i*10;
3.sum=0;
for(i=0;i for(j=0;j sum=sum+Array[i][j]; 4.s=0; for(I=0;i for(j=0;j s+=B[i][j]; sum=s; 5.for(i=0;i for(j=0;j A[i][j]=0; 6.i=0; while(i<=n) i=i*3; 第2章线性表 一、单项选择题 1.一个向量(即一批地址连续的存储单元)第一个元素的存储地址是100,每个元素的长度为2,则第5个元素的地址是____。 A.110B.108C.100D.120 2.线性表的逻辑顺序与存储顺序总是一致的,这种说法___。 A.正确B.不正确 3.线性表若采用链式存储结构时,要求内存中可用存储单元的地址___。 A.必须是连续的B.部分地址必须是连续的 C.一定是不连续的D.连续或不连续都可以 4.在以下的叙述中,正确的是___。 A.线性表的顺序存储结构优于链表存储结构 B.线性表的顺序存储结构适用于频繁插入/删除数据元素的情况 C.线性表的链表存储结构适用于频繁插入/删除数据元素的情况 D.线性表的链表存储结构优于顺序存储结构 5.在等概率情况下,顺序表的插入操作要移动______结点。 A.全部B.一半 C.三分之一 D.四分之一 6.不带头结点的单链表head为空的判定条件是____。 A.head==NULLB.head->next==NULL C.head->next==headD.head! =NULL 7.带头结点的单链表head为空的判定条件是____。 A.head==NULLB.head->next==NULL C.head->next==headD.head! =NULL 8.非空的循环单链表head的尾结点(由p所指向)满足____。 A.p->next==NULLB.p==NULL C.p->next==headD.p==head 9.在一个单链表中,已知q所指结点是p所指结点的前驱结点,若在q和p之间插入s结点,则执行____。 A.s->next=p->next;p->next=s;B.p->next=s->next;s->next=p; B.q->next=s;s->next=p;C.p->next=s;s->next=q; 10.在一个单链表中,若p所指结点不是最后结点,在p之后插入s所指结点,则执行____。 A.s->next=p;p->next=s;B.s->next=p->next;p->next=s; C.s->next=p->next;p=s;C.p->next=s;s->next=p; 11.在一个单链表中,若删除p所指结点的后续结点,则执行____。 A.p->next=p->next->next;B.p=p->next;p->next=p->next->next; C.p->next=p->next;D.p=p->next->next; 12.从一个具有n个结点的单链表中查找其值等于x结点时,在查找成功的情况下,需平均比较____个结点。 A.nB.n/2C.(n-1)/2D.(n+1)/2 13.在一个具有n个结点的有序单链表中插入一个新结点并仍然有序的时间复杂度是____。 A.O (1)B.O(n)C.O(n2)D.O(nlog2n) 14.给定有n个元素的向量,建立一个有序单链表的时间复杂度是____。 A.O (1))B.O(n)C.O(n2)D.O(n*log2n) 15.在n个结点的线性表的数组实现中,算法的时间复杂度是O (1)的操作是。 A.访问第i(1<=i<=n)个结点和求第i个结点的直接前驱(1 B.在第i(1<=i<=n)个结点后插入一个新结点 C.删除第i(1<=i<=n)个结点 D.以上都不对 二、填空题 1.单链表可以做____的链接存储表示。 2.在双链表中,每个结点有两个指针域,一个指向______,另一个指向_____。 3.在一个单链表中p所指结点之前插入一个s(值为e)所指结点时,可执行如下操作: q=head; while(q->next! =p)q=q->next; s=newNode;s->data=e; q->next=;//填空 s->next=;//填空 4.在一个单链表中删除p所指结点的后继结点时,应执行以下操作: q=p->next; p->next=____;//填空 delete;//填空 5.在一个单链表p所指结点之后插入一个s所指结点,应执行s->next=____和p->next=____的操作。 6.对于一个具有n个结点的单链表,在已知p所指结点后插入一个新结点的时间复杂度是____;在给定值为x的结点后插入一个新结点的时间复杂度是 ____。 三、简答 1.算法分析的目的是什么? 2.什么是算法的最坏和平均时间复杂性? 3.什么是线性表? 线性表的主要运算有哪些? 4.试比较顺序表与链表的优缺点。 5.写出在单链表L中的p所指结点之前插入一个s所指结点的操作。 四、算法题 1.设顺序表La中的数据元数递增有序。 试写一算法,将x插入到顺序表的适当位置上,以保持该表的有序性。 2、写算法: 在顺序表L中找到最小的元素,并将其与原来第一个元素换位置,显示改变后的顺序表。 3、写算法: 在单链表L中找到最小的元素,并将其与原来第一个元素换位置,显示改变后的单链表。 4.设计一个函数,查找单链表中数值为x的结点。 5.已知一个单链表,编写一个删除其值为x的结点的算法。 6.已知一个递增有序的单链表,编写一个函数向该单链表中插入一个元素为x的结点,使插入后该链表仍然递增有序。 7.试写一算法,实现顺序表的就地逆置,即利用原表的存储空间将线性表(a1,a2,….an)逆置为(an,an-1,….,a1)。 8.试写一算法,实现单链表的就地逆置(要求在原链表上进行)。 *9.已知一个单链表,编写一个函数从此单链表中删除自第i个元素起的中k个元素 *10.有一个共10个结点的单链表,试设计一个函数将此单链表分为两个结点数相等的单链表。 *11.已知一个指针p指向单循环链表中的一个结点,编写一个对此单循环链表进行遍历的算法。 *12.一个顺序表中的元素为全部为正或者负整数,试设计一算法,在尽可能少的时间内重排该表,将正、负整数分开,使顺序表中所有负整数在正整数前面。 。 *13.已知线性表中的元素以值递增有序排列,并以单链表作存储结构。 试写一算法,删除表中所有大于x且小于y的元素(若表中存在这样的元素)同时释放被删除结点空间。 第3章栈和队列 一单项选择题 1.一个栈的入栈序列a,b,c,d,e,则栈的不可能的输出序列是____。 A.edcbaB.decbaC.dceabD.abcde 2.若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为____。 A.iB.n=iC.n-i+1D.不确定 3.栈结构通常采用的两种存储结构是____。 4.判定一个顺序栈ST(最多元素为m)为空的条件是____。 5.判定一个顺序栈ST(最多元素为m)为栈满的条件是____。 6.栈的特点是____,队列的特点是____。 A.先进先出B.先进后出 7.一个队列的数据入列序列是1,2,3,4,则队列的出队时输出序列是____。 8.判定一个循环队列Q(最多元素为m)为空的条件是____, 为满的条件是____。 9.循环队列用数组A[0,m-1]存放其元素值,已知其头尾指针分别是front和rear,则当前队列中的元素个数是____。 A.(rear-front+m)%mB.rear-front+1 C.rear-front-1D.rear-front 10.栈和队列的共同点是____。 A.都是先进后出B.都是先进先出 C.只允许在端点处插入和删除元素D.没有共同点 二填空题(将正确的答案填在相应的空中) 1.向量(数组)、栈和队列都是____结构,可以在向量的____位置插入和删除元素;对于栈只能在____插入和删除元素;对于队列只能在____插入元素和____删除元素。 2.向栈中压入元素的操作是____。 对栈进行退栈时的操作是____。 (写涵数调用语句) 3.在一个循环队列中,队首指针指向队首元素的____。 4.从循环队列中删除一个元素时,其操作是____。 (写涵数调用语句) 三、简答题 1.什么是栈? 什么是队列? 它们各自的特点是什么? 2.线性表、栈、队列有什么异同? 3.简述栈的入栈、出栈操作的过程。 (用文字描述) 4.在循环队列中简述入队、出队操作的过程。 (用文字描述) 5.在什么情况下,会选择使用栈或队列数据结构? 6.顺序队的“假溢出”是怎样产生的? 如何知道循环队列是空还是满? 四、读栈队相关的程序,写出程序的运行结果 五、算法设计题 1.输入一个任意的非负十进制整数,输出与其等值的八进值数。 2.试写一个算法判别读入的一个以‘@’为结束符的字符序列是否是“回文”。 。 3.设计一算法能判断一个算术表达式中的圆括号配对是否正确。 (提示: 对表达式进行扫描,凡遇到“(”就进栈,遇到“)”就退出栈顶的“(”,表达式扫描完毕时栈若为空则圆括号配对正确。 第5章树与二叉树 一、单项选择题 1.树最适合用来表示____。 A.有序数据元素B.无序数据元素 C.元素之间具有分支层次关系的数据D.元素之间无联系的数据 2.假定在一棵二叉树中,双分支结点数为15,单分支结点数为30个,则叶子结点数为个。 A.15B.16C.17D.47 3.按照二叉树的定义,具有3个结点的不同形状的二叉树有____种。 A.3B.4C.5D.6 5.深度为5的二叉树至多有____个结点。 A.16B.32C.31D.10 6.如果某二叉树的前根次序遍历结果为stuwv,中序遍历为uwtvs,那么该二叉树的后序为____。 A.uwvtsB.vwutsC.wuvtsD.wutsv 7.二叉树的前序遍历序列中,任意一个结点均处在其子女结点的前面,这种说法____。 A.正确B.错误 8.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf,则其后序遍历的结点访问顺序是____。 A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca 9.在一非空二叉树的中序遍历序列中,根结点的右边____。 A.只有右子树上的所有结点B.只有右子树上的部分结点 C.只有左子树上的部分结点D.只有左子树上的所有结点 10.一棵二叉树如图6.1所示,其中序遍历的序列为__。 A.abdgcefhB.dgbaechfC.gdbehfcaD.abcdefgh 11.设a,b为一棵二叉树上的两个结点,在中序遍历时,a在b前的条件是。 A.a在b的右方B.a在b的左方C.a是b的祖先D.a是b的子孙 12.已知某二叉树的后序遍历序列是dabec,中序遍历序列是debac,它的前序遍历序列是____。 A.acbedB.decabC.deabcD.cedba 13.已知一棵完全二叉树的结点总数为9个,则最后一层的结点数为。 A.1B.2C.3D.4 14.如图6.2所示的4棵二叉树,____不是完全二叉树。 二、填空题(将正确的答案填在相应的空中) 1.将树转化为二叉树的基本目的是____。 2.深度为k的完全二叉树至少有____个结点。 至多有____个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号是____。 3.在一棵二叉树中,度为零的结点的个数为n0,度为2的结点的个数为n2,则有n0=____。 4.一棵二叉树的第i(i≥1)层最多有____个结点;一棵有n(n>0)个结点的满二叉树共有____个叶子和____个非终端结点。 5.哈夫曼树是指______________________________________________的二叉树 6.有如图6.3所示的二叉树,回答以下问题: ⑴其中序遍历序列为____; ⑵其前序遍历序列为____; ⑶其后序遍历序列为____; 三、应用题 1.分别写出下图所示二叉树的前序、中序和后序遍历序列。 2.若二叉树中各结点值均不相同。 1)已知一个二叉树的中序和后序遍历序列分别为GDHBAECIF和GHDBEIFCA,请画出此二叉树。 2)已知一个二叉树的前序和中序分别为ABCDEFGH和BDCEAFHG,请画出此二叉树。 3.一个二叉树如图所示,将其转换为树。 4.画出该森林对应的二叉树。 5.有一份电文中共使用5个字符: a、b、c、d、e,它们的出现频率依次为{5、2、1、6、4};试画出对应的哈夫曼树,并求出每个字符的哈夫曼编码。 四、算法设计题 1.一个二叉树以链式结构存储,分别给出求二叉树结点总数和叶子结点总数和高度的算法。 2.一个二叉树以链式结构存储,写出在二叉树中查找值为x的结点的算法。 3.设计算法将一个以链式存储结构的二叉树进行各种遍历 第6章图 一、单项选择题 1.在一个图中,所有顶点的度数之和等于所有边数的____倍。 A.1/2B.1C.2D.4 2.任何一个无向连通图的最小生成树。 A.只有一棵B.有一棵或多棵C.一定有多棵D.可能不存在 3.在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的____倍。 A.1/2B.1C.2D.4 4.一个有n个顶点的无向图最多有____条边。 A.nB.n(n-1)C.n(n-1)/2D.2n 5.具有4个顶点的无向完全图有____条边。 A.6B.12C.16D.20 6.具有6个顶点的无向图至少应有____条边才能确保是一个连通图。 A.5B.6C.7D.8 7.在一个具有n个顶点的无向图中,要连通全部顶点至少需要____条边。 A.nB.n+1C.n-1D.n/2 8.对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小是 ____。 A.nB.(n-1)2C.n-1D.n*n 9.对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则表头向量的大小为_①___;所有邻接表中的接点总数是_②___。 ①A.nB.n+1C.n-1D.n+e ②A.e/2B.eC.2eD.n+e 10.已知一个图如图7.1所示,若从顶点a出发按深度搜索法进行遍历,则可能得到的一种顶点序列为__①__;按宽度搜索法进行遍历,则可能得到的一种顶点序列为__②__。 ①A.a,b,e,c,d,fB.e,c,f,e,b,dC.a,e,b,c,f,dD.a,e,d,f,c,b ②A.a,b,c,e,d,fB.a,b,c,e,f,dC.a,e,b,c,f,dD.a,c,f,d,e,b 11.已知一有向图的邻接表存储结构如图6.2所示。 ⑴根据有向图的深度优先遍历算法,从v1出发,所得到的顶点序列是___ A.v1,v2,v3,v5,v4B.v1,v2,v3,v4,v5 C.v1,v3,v4,v5,v2D.v1,v4,v3,v5,v2 ⑵根据有向图的宽度优先遍历算法,从v1出发,所得到的顶点序列是____。 A.v1,v2,v3,v4,v5B.v1,v3,v2,v4,v5 C.v1,v2,v3,v5,v4D.v1,v4,v3,v5,v2 12.采用邻接表存储的图的深度优先遍历算法类似于二叉树的____。 A.先序遍历B.中序遍历C.后序遍历D.按层遍历 13.采用邻接表存储的图的宽度优先遍历算法类似于二叉树的____。 A.先序遍历B.中序遍历C.后序遍历D.按层遍历 15.在图6.3所示的拓朴排列的结果序列为。 A.125634B.516234C.123456D.521634 图6.3有向图 16.一个有n个顶点的无向连通图,它所包含的连通分量个数为。 A.0B.1C.nD.n+1 17.对于一个有向图,若一个顶点的入度为k1,、出度为k2,则对应邻接表中该顶点单链表中的结点数为。 A.k1B.k2C.k1-k2D.k1+k2 18.对于一个有向图,若一个顶点的入度为k1,、出度为k2,则对应逆邻接表中该顶点单链表中的结点数为。 A.k1B.k2C.k1-k2D.k1+k2 二、基本知识题 1.图的逻辑结构特点是什么? 什么是无向图和有向图? 什么是子图? 什么是网络? 什么是完全图,生成树? 2.什么是顶点的度? 什么是路径? 什么是连通图和非连通图? 什么是非连通图的连通分量? 3.给出图所示的无向图G的邻接矩阵和邻接表两种存储结构。 4.假设图的顶点是A、B……请根据下面的邻接矩阵画出相应的无向图或有向图。 5.分别给出图所示G图的深度优先搜索和广度优先搜索得到的顶点访问序列。 6.应用prim算法求图所示带权连通图的最小生成树。 7.写出图所示有向图的拓朴排序序列。 8.在无权图G的邻接矩阵A中,若(vi,vj)或<vi,vj>属于图G的边集合,则对应元素A[i][j]等于____,否则等于____。 9.在无向图G的邻接矩阵A中,若A[i][j]等于1,则A[j][i]等于____。 10.已知一个有向图的邻接矩阵表示,计算第i个结点的入度的方法是 ____。 11.已知一个图的邻接矩阵表示,删除所有从第i个结点出发的边的方法是 ____。 12.如果含n个顶点的图形成一个环,则它有棵生成树。 三、算法设计题 1.如图1所示图G,建立其对应的邻接表存储,并写出深度优先算法。 2.如图1所示图G,建立其对应的的邻接矩阵存储,并写出广度优先算法。 图1 3.编写一个函数建立一个有向图的邻接表。 4.编写一个无向图的邻接矩阵转换成邻接表的算法。 第7章查找 一、基础知识题 1.解释下列名词 (1)查找 (2)树型查找 (3)平衡因子 (4)散列函数 (5)冲突 2.设有序表为{a,b,c,d,e,f,g},请分别画出对给定值f,g和h进行拆半查找的过程。 3.试述顺序查找法、二分查找法和分块查找法对被查找表中元素的要求,每种查找法对长度为n的表的等概率查找长度是多少? 4.顺序查找法的平均查找长度为____;折半查找法的平均查找长度为 ____;哈希表查找法采用链接法处理冲突时的平均查找长度为____。 5.在各种查找方法中,平均查找长度与结点个数n无关的查找方法是____。 6.折半查找的存储结构仅限于____,且是____。 7.假设在有序线性表A[1..20]上进行折半查找,则比较一次查找成功的结点数为____,则比较二次查找成功的结点数为____,则比较三次查找成功的结点数为____,则比较四次查找成功的结点数为__
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构 习题
![提示](https://static.bdocx.com/images/bang_tan.gif)