2023年数据结构(本)期末综合练习(12月)_第1页
2023年数据结构(本)期末综合练习(12月)_第2页
2023年数据结构(本)期末综合练习(12月)_第3页
2023年数据结构(本)期末综合练习(12月)_第4页
2023年数据结构(本)期末综合练习(12月)_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数据结构期末综合练习2023年12月期末练习一一、单项选择题1.一种逻辑结构在存储时()。A.只要存储数据元素间的关系B.只能采用一种存储结构C.可采用不同的存储结构D.只要存储数据元素的值2.同一种逻辑结构()。A.只能有唯一的存储结构B.可以有不同的存储结构C.只能表达某一种数据元素之间的关系D.以上三种说法均不对的3.对链表,以下叙述中对的的是()。A.不能随机访问任一结点B.结点占用的存储空间是连续的C.插入删除元素的操作一定要要移动结点D.可以通过下标对链表进行直接访问4.链表所具有的特点是()。A.可以随机访问任一结点B.占用连续的存储空间C.插入删除元素的操作不需要移动元素结点D.可以通过下标对链表进行直接访问5.线性表在存储后,假如相关操作是:规定已知第i个结点的位置访问该结点的前驱结点,则采用()存储方式是不可行的。A.单链表B.双链表C.单循环链表D.顺序表6.数据的物理结构()。A.与数据的逻辑结构无关B.仅仅涉及数据元素的表达C.只涉及数据元素间关系的表达D.涉及数据元素的表达和关系的表达7.栈和队列的共同特点是()。A.都是先进后出B.元素都可以随机进出C.只允许在端点处插入和删除元素D.都是先进先出8.线性结构中数据元素的位置之间存在()的关系。A.一对一B.一对多9.元素2,4,6,8按顺序依次进栈,按该栈的的也许输出序列依次入队列,该队列的也许输出序列是()(进栈出栈可以交替进行)。A.8,6,2,4B.8,4,2,6C.6,2,4,8D.8,6,4,210.以下表中可以随机访问的是()。A.单向链表B.双向链表C.单向循环链表D.顺序表11.在一个不带头结点的链队中,假设f和r分别为队头和队尾指针,则从该对列中删除一个结点并把结点的值保存在变量x中的运算为()。A.x=rdata;r=rnext;B.r=rnext;x=rdataC.x=fdata;f=fnext;D.f=fnext;x=fdata12.算法的时间复杂度与()有关。A.所使用的计算机B.与计算机的操作系统C.与算法自身D.与数据结构13.设有一个20阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则数组中第38号元素相应于矩阵中的元素是()。A.a10,8B.a7,6C.a9,2D.a14.设有一个长度为n的顺序表,要删除第i个元素需移动元素的个数为()。A.n-i+1B.n-iC.n-i-1D.i15.在C语言中,分别存储“S”和‘s’,各需要占用()字节。A.一个和两个B.两个C.一个D.两个和一个16.在一个单链表中,p、q分别指向表中两个相邻的结点,且q所指结点是p所指结点的直接后继,现要删除q所指结点,可用的语句是()。A.p=q->nextB.p->next=qC.p->next=qnextD.q->next=NULL17.一棵有n个结点,采用链式存储的二叉树中,共有()个指针域被有效使用(即指针域为非空)。A.n+1B.nC.n-1D.n-218.从一个栈顶指针为top的链栈中删除一个结点时,用变量x保存被删结点的值,则执行()。A.x=top->data;top=top->next;B.x=top->data;C.top=top->next;x=top->data;D.top=top->next;x=data;19.在一棵二叉树中,若编号为i的结点存在双亲结点,则双亲结点的顺序编号为()。A.i/2.0B.i/2向下取整C.2i+1D.i+220.在一个链队中,假设f和r分别为队头和队尾指针,则删除一个结点的运算为()。A.r=f->next;B.r=r->next;C.f=f->next;D.f=r->next;21.设一棵哈夫曼树共有2n+1个结点,则该树有()个非叶结点。A.nB.n+1C.n-122.一个栈的进栈序列是a,b,c,d,e,则栈的不也许输出序列是()(进栈出栈可以交替进行)。A.dceabB.edcbaC.decbaD.abcde23.一棵完全二叉树共有4层,且第4层上有2个结点,该树共有()个非叶子结点(根为第一层)。A.5B.4C.324.有一个长度为10的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。A.26/10B.29/1025.如图1所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则也许得到的一种顶点序列为()。A.abedfcB.acfebdC.aebcdfD.aebcfdbbdfeca图126.排序算法中,从未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(规定比较次数尽量少),然后将其放入已排序序列的对的位置的方法是()。A.冒泡B.直接插入C.折半插入D.选择排序27.一组记录的关键字序列为(56,30,89,66,48,50,94,87,100),运用快速排序,以第一个关键字为分割元素,通过一次划分后结果为()。A.30,50,48,56,66,89,94,100,87B.50,30,48,56,66,89,94,87,100C.48,30,50,56,66,89,94,87,100D.50,30,48,66,56,89,94,87,10028.设有一个10阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主存储到一维数组B中(数组下标从1开始),则矩阵中元素A8,5在一维数组B中的下标是()。A.33B.32C.8529.线性表以()方式存储,能进行折半查找。A.关键字有序的链接B.顺序C.关键字有序的顺序D.数组C.多对多D.每一个元素都有一个直接前驱和一个直接后继30.在一个无向图中,所有顶点的度数之和等于边数的()倍。A.3B.2.5C二、填空题1.数据的逻辑结构在计算机中的表达称为________结构。2.栈和队列的操作特点分别是_______和________。3.求两个n阶矩阵的乘积,算法的基本操作为________,时间复杂度为________。4.结构中的数据元素存在多对多的关系称为________结构。5.设有一个长度为25的顺序表,第8号元素到第25号元素依次存放的值为8,9,10,11,…25,某人想要在第8个元素前插入1个元素7(也就是插入元素作为新表的第8个元素),他的做法是从第8号元素开始,直到第25号元素依次向后移动1个位置,然后把7存放在8号位置,其结果是新表中第25号元素的值为_____。6.根据数据元素间关系的不同特性,通常可分为集合、线性、、四类基本结构。7.在双向链表中,要在p所指的结后插入q所指的结点(设q所指的结点已赋值),其中所用的一条语句(p->next)->prior=q;的功能是使P所指结点的_______指向q。8.规定在n个数据元素中找其中值最大的元素,设基本操作为元素间的比较。则比较的次数和算法的时间复杂度分别为________和________。9.设有一个带头结点的,头指针为head的单向链表,p指向表中某一个结点,且有p->next==NULL,现要删除头结点,并使该单向链表构导致单向循环链表,通过操作head=head->next;________。10.在一个单向链表中p所指结点之后插入一个s所指向的结点时,应执行________和p->next=s;的操作。11.从一个栈顶指针为top的链栈中删除一个结点时,用d保存被删结点的值,可执行________。(结点的指针域为next,数据域为data)12.在二叉树的链式存储结构中,通常每个结点中设立三个域,它们是值域、。13循环链队列中,设front和rear分别为队头和队尾指针,(最多元素为MaxSize,采用少用一个元素的模式),判断循环链队列为满的条件为________。14.一棵二叉树中顺序编号为i的结点,若它存在左、右孩子,则左、右孩子编号分别为________、________。15.对稀疏矩阵进行压缩存储,可采用三元组表,一个6行7列的稀疏矩阵A相应的三元组表共有8个元素,则矩阵A共有_______个零元素。16.向一个栈顶指针为h的链栈中插入一个s所指结点时,可执行s->next=h;和________。17.一棵有20个结点的4度的树,其中3度结1个,2度结1个,1度结2个,则该树共有_______个叶结点。18.在一个链队中,设f和r分别为队头和队尾指针,则插入s所指结点的操作为________和r=s;(结点的指针域为next)19.一棵有18个结点的二叉树,其2度结点数的个数为8,则该树共有_______个1度结点20.设有一棵深度为4的完全二叉树,第四层上有5个结点,该树共有_________个结点。(根所在结点为第1层)21.如图2所示的二叉树,其先序遍历序列为_________。3c7g3c7gd65e4dc2b18hd9图222.对稀疏矩阵进行压缩存储,矩阵中每个非零元素相应的三元组涉及该元素的_______、_______和_______三项信息。23.在查找表中,通过记录的某关键字能唯一地拟定一个记录,该关键字称为_________。24.在对一组记录(55,39,97,22,16,73,65,47,88)进行直接插入排序时,当把第7个记录65插入到有序表时,为寻找插入位置需比较_________次。三、综合题1.(1)对给定权值3,1,4,4,5,6,构造深度为5的哈夫曼树。(设根为第1层)(2)求树的带权途径长度。(3)链接存储上述哈夫曼树,结点中共有多少个个指针域为空,说明理由.2.(1)以2,3,4,7,8,9作为叶结点的权,构造一棵哈夫曼树(规定每个结点的左子树根结点的权小于等于右子树根结点的权),给出相应权重值叶结点的哈夫曼编码。(2)一棵哈夫曼树有n个叶结点,它一共有多少个结点?简述理由?3.(1)如下的一棵树,给出先序遍历序列(2)把1,2,3,4,5,6,7,8,9填人,使它成为一棵二叉排序树提醒:设图中的树是二叉排序树,找出中序遍历序列与1,2,…9的相应关系(3)请在该树中再插入一个结点3.5作为叶结点,并使它仍然是一棵二叉排序树。AA1A2A43A7A5A9A8A3A6图34.一组记录的关键字序列为(46,79,56,38,40,84)(1)运用快速排序的方法,给出以第一个记录为基准得到的一次划分结果(给出逐次互换元素的过程,规定以升序排列)(2)对上述序列用堆排序的方法建立大根堆,规定以二叉树逐次描述建堆过程。5.设查找表为(5,6,7,8,9,10,11,12,13,14)(1)画出对上述有序表进行折半查找所相应的鉴定树(规定以数据元素作为树结点)(2)给出二叉排序树的定义,针对上述折半查找所相应的鉴定树的构造过程,说明鉴定树是否是二叉排序树(设树中没有相同结点)?(3)为了查找元素5.5,通过多少次元素间的比较才干拟定不能查到?6.设查找表为(50,60,75,85,96,98,105,110,120,130)(1)说出进行折半查找成功查找到元素120需要进行多少次元素间的比较?(2)为了折半查找元素95,通过多少次元素间的比较才干拟定不能查到?(3)画出对上述有序表进行折半查找所相应的鉴定树(规定以数据元素作为树结点)四、程序填空题1.以下函数为直接选择排序算法,对a[1],a[2],…a[n]中的记录进行直接选择排序,完毕程序中的空格typedefstruct{intkey;……}NODE;voidselsort(NODEa[],intn){ﻩinti,j,k; NODEtemp; for(i=1;i<=___(1)_____;i++) {ﻩﻩk=i;ﻩ for(j=i+1;j<=___(2)_____;j++) ﻩ if(a[j].key<a[k].key)__(3)______;ﻩ if(i!=k) {ﻩﻩ temp=a[i];ﻩ ﻩ___(4)_____; ﻩﻩ____(5)____;ﻩﻩ}ﻩ}}2.以下是用尾插法建立带头结点且有n个结点的单向链表的程序,结点中的数据域从前向后依次为1,2,3,……,n,完毕程序中空格部分。NODE*create(n){NODE*head,*p,*q;inti;p=(NODE*)malloc(sizeof(NODE));head=(1);(2);pnext=NULL;/*建立头结点*/for(i=1;i<=n;i++){p=(3);pdata=i;pnext=NULL;qnext=(4);(5);}return(head);}3.设有一个头指针为head的不带头结点单向链表,且p、q是指向链表中结点类型的指针变量,p指向链表中某结点a(设链表中没有结点的数据域与结点a的数据域相同),写出相关语句(1).使该单向链表成为单向循环链表(2)删去a结点q=p;x=p->data;while(q->next!=NULL)q=q->next;__(1)___q=p;p=p->next;while(p->data!=x){q=p;__(2)___}__(3)___4.以下程序是中序遍历二叉树的递归算法的程序,完毕程序中空格部分(树结构中左、右指针域分别为left和right,数据域data为字符型,BT指向根结点)。voidInorder(structBTreeNode*BT){if(BT!=NULL){(1);(2);(3);}}期末复习一答案一、单项选择题1.C2.B3.A4.C5.A6.D7.C8.A9.D10.D11.C12.C13.C14.B15.D16.C17.C18.A19.B20.C21.A22.A23.B24.B25.C26.C27.B28.A29.C30.D二、填空题1.物理(存储)2.后进先出、先进先出3.乘法O(n3)4.图状(网状)5.86.树形图状7.直接前驱的左指针8.n-1,O(n)、9.p->next=head;10.s->next=p->next;11.d=top->data;top=top->next;12.左指针右指针13.front==(rear+1)%MaxSize14.2i2i+115.3416.h=s;17.1318.r->next=s;19.120.1221.22.行下标、列下标、非零元素值23.主关键字24.3三、综合应用题654365435423418145197896434531213图4(2)WPL=3*4+1*4+4*3+6*2+4*2+5*2=58(3)共11个结点,22个指针域,除根结点外,每个结点相应一个指针域.,共10个指针域非空,故有22-10=12个空指针域,2.3333(1)151815187998799854543232图52:11103:11114:1107:008:019:10(2)2n-1个,由于非叶结点数比叶结点数少一个。3.(1)A1A2A(2)(3)77421563893.5图64.(1)初始序列46,79,56,38,40,8440,79,56,38,40,8440,79,56,38,79,8440,38,56,38,79,8440,38,56,56,79,8440,38,46,56,79,8456795679384084468479384046566567938404679384084845646图65.(1)9971014118512136图7(2)二叉排序树或者是一棵空树,或者是一棵具有下列性质的二叉排:若它的左子树非空,则左子树的所有结点的值都小于它的根结点的值;若它的右子树非空,则右子树的所有结点的值都大于(若允许结点有相同的值,则大于等于)它的根结点的值;左,右子树也是一棵二叉排序树,按定义鉴定树是二叉排序树。(3)3次6.(1)3次(2)4次(3)9696759813010585501100512060图8四、程序填空题1.(1)n-1(2)n(3)k=j(4)a[i]=a[k](5)a[k]=temp2.(1)p(2)q=p(3)(NODE*)malloc(sizeof(NODE))(4)p(5)q=p3.q->next=head;p=p->next;q->next=p->next;4.(1)Inorder(BT->left)(2)printf(“%c”,BT->data)(3)Inorder(BT->right)期末练习二一、单项选择题1.结构中的元素之间存在一对多的关系是()。A.集合B.线性结构C.树形结构D.图状结构2.在C语言中,顺序存储长度为3的字符串,需要占用()个字节。A.4B.3C.6D.123.对不带头结点的单向链表,判断是否为空的条件是()(设头指针为head)。A.head==NULLB.head->next==NULLC.head->next==headD.head=NULL4.串函数StrCat(a,b)的功能是进行串()。A.比较B.复制C.赋值D.连接5.在一个不带头结点的单循环链表中,p、q分别指向表中第一个结点和尾结点,现要删除第一个结点,可用的语句是()。A.p=q->next;p=p->next;B.p->next=q;p=p->next;C.p->next=q->next;q=p;D.p=p->next;q->next=p;6.一棵有n个结点采用链式存储的二叉树中,共有()个指针域为空。A.n+1B.nC.n-1D.n-27.一个栈的进栈序列是1,2,3,4,5,则栈的不也许输出序列是()(进栈出栈可以交替进行)。A.12345B.43512C.45321D.543218.设一棵哈夫曼树共有n个非叶结点,则该树有()个叶结点。A.nB.n+1C.n-1D.2n9.一个队列的入队序列是2,4,6,8,按该队列的输出序列使各元素依次入栈,该栈的也许输出序列是()。A.8,6,4,2B.6,2,4,8C.8,4,2,6D.8,2,4,610.从一个栈顶指针为top的链栈中删除一个结点时,用变量x保存被删结点的值,则执行()。A.x=top->data;top=topnext;B.x=top->data;C.top=top->next;x=top->data;D.top=top->next;x=data;11.在一个链队中,假设f和r分别为队头和队尾指针,已生成一个结点p,要为结点p赋值x,并入队的运算为()。A.p->data=x;p->next=NULL;f->next=p;f=p;B.p->data=x;p->next=NULL;r->next=p;r=p;C.p->data=x;p->next=r;r=s;D.p->data=x;p->next=f;f=s;12.一棵完全二叉树共有5层,且第5层上有六个结点,该树共有()个结点。A.30B.20C.21D.2313.设有一个25阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素.a7,6在一维数组B中的下标是()。A.34B.14C.26D.2714.在一个无向图中,所有顶点的度数之和等于边数的()倍。A.3B.2.5C.1.5D.215.以下程序段的结果是c的值为()。chara[5]=“1236789”while(*p++)c++;A.8,B.7C.10D.1216.已知如图1所示的一个图,若从顶点V1出发,按深度优先搜索法进行遍历,则也许得到的一种顶点序列为()。A.V1V2V4V8V5V3V6V7B.V1V2V4V5V8V3V6V7C.V1V2V4V8V3V5V6V7D.V1V3V6V7V2V4V5V8VV6V7V1V2V3V8V4V5图117.一棵有23个结点,采用链式存储的二叉树中,共有()个指针域为空。A.24B.25C.23D.4518.已知如图2所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则也许得到的一种顶点序列为()。A.abcedfB.abcefdC.aebcfdD.acfdebbdbdfeca图219.在一棵二叉树中,若编号为i的结点是其双亲结点的左孩子,则双亲结点的顺序编号为()。A.i/2B.2i-1C.2i+1D.i/2-120.对二叉排序树进行()遍历,可以使遍历所得到的序列是有序序列。A.按层次B.后序C.中序D.前序21.设一棵哈夫曼树共有2n+1个叶结点,则该树有()个叶结点。A.n-1B.nC.n+1D.2n22.在有序表{2,4,7,14,34,43,47,64,75,80,90,97,120}中,用折半查找法查找值80时,经()次比较后查找成功。A.4B.2C.3D.523.已知如图3所示的一个图,若从顶点a出发,按深度优先搜索法进行遍历,则也许得到的一种顶点序列为()。A.abecdfB.acfebdC.aebcfdD.aedbfcbbdfeca图324.有一个长度为9的有序表,按折半查找对该表进行查找,在等概率情况下查找成功的平均比较次数为()。A.25/10B.25/9C.20/9D.17/925.已知如图4所示的一个图,若从顶点B出发,按广度优先法进行遍历,则也许得到的一种顶点序列为()。A.BADEHCFGB.ADEHCGFC.BADECHFGD.BADEHCFGFFGV7ABCHV8DV4E图426.排序算法中,从未排序序列中依次取出元素与已排序序列(初始为空)中的元素进行比较(规定比较次数尽量少),然后将其放入已排序序列的对的位置的方法是()。A.冒泡B.直接插入C.折半插入D.选择排序27.一组记录的关键字序列为(46,38,56,40,79,84),运用快速排序,以第一个关键字为分割元素,通过一次划分后结果为()。A.40,38,46,79,56,84B.40,38,46,56,79,84C.40,38,46,84,56,79D.38,40,46,56,79,8428.一组记录的关键字序列为(46,79,56,38,40,84),运用快速排序,以第一个关键字为分割元素,通过一次划分后结果为()。A.40,38,46,79,56,84B.40,38,46,56,79,84C.40,38,46,84,56,79D.38,40,46,56,79,8429.在有序表{21,23,28,33,43,45,46,73,77,78,89,99,106}中,用折半查找值43时,经()次比较后查找成功。A.6B.3C.8D.430.排序方法中,从尚未排序序列中挑选元素,并将其依次放入已排序序列(初始为空)的一端的方法,称为()排序。A.归并B.插入C.快速D.选择二、填空题1.本书中介绍的树形结构和_______属非线性结构。2.在二叉树的链式存储结构中,通常每个结点中设立三个域,它们是_______、、右指针。3.设有一个长度为18的顺序表,要在第4个元素之前插入2个元素(也就是插入元素作为新表的第5个和第4个元素),则最少要移动元素的个数为()。4.一棵二叉树中顺序编号为i的结点,若它存在左、右孩子,则左、右孩子编号分别为______、________。5.在双向链表中,要删除p所指的结点,可以先用语句(p->prior)->next=p->next;然再用语句________。6.串的两种最基本的存储方式是________和________。7.在一个单向链表中p所指结点之后插入一个s所指向的结点时,应执行s->next=p->next;和_______的操作.8.一棵有2n-1个结点的二叉树,其每一个非叶结点的度数都为2,则该树共有_______个叶结点。9.一个栈和一个队列的输入序列都为abcdefg,它们也许有相同的输出序列吗?_________。(若没有则回答没有,若有则写出序列,进栈出栈可以交替进行)。10.对于一棵具有n个结点的二叉树,其相应的链式存储结构中共有________个指针域为空。11.从一个栈顶指针为top的链栈中取栈顶元素,用d保存栈顶元素的值,可执行________。(结点的数据域为data)12.________遍历二叉排序树可得到一个有序序列。13.循环链队列中,设front和rear分别为队头和队尾指针,(最多元素为MaxSize,),判断循环链队列为空的条件是________为真。14.如图5所示的二叉树,其后序遍历序列为。eefgibachd图515.对稀疏矩阵进行压缩存储,可采用三元组表,设a是稀疏矩阵A相应的三元组表类型(结构体类型)变量,a中的一个成员项是三元组类型的结构体数组data,按书中定义,若a.data[0].i=2;a.data[0].j=3;a.data[0].v=16;它提供的A数组的相关信息有_______16.如图6所示的二叉树,其先序遍历序列为_________。ggfabdec图617.设有一棵深度为5的完全二叉树,该树共有20个结点,第五层上有个叶结点。(根所在结点为第1层)18.图的深度优先搜索和广度优先搜索序列不一定是唯一的。此断言是______的。(回答对的或不对的)19.中序遍历________树可得到一个有序序列。20.二叉树为二叉排序的充足必要条件是其任一结点的值均大于其左孩子的值、小于其右孩子的值。这种说法是__________的。(回答对的或不对的)21.如图7所示的二叉树,其后序遍历序列为_________。3c3c7gd6f5e4dc2b1a8hd9图722.对记录序列排序是指按记录的某个关键字排序,记录序列按_________排序结果是唯一的。23.给定一组权重值,构造哈夫曼树,哈夫曼树的高度一定是唯一的,这种说法是__________的。(回答对的或不对的)24.按某关键字对记录序列排序,若在排序前和排序后仍保持它们的前后关系,则排序算法是稳定的,否则是不稳定的。三、综合题1.(1)说明什么是顶点活动网(AOV网)和拓扑序列(2)设有向图G如下,写出3种拓扑序列,(3)在图G中增长一条边,使图G仅有一条拓扑序列aabcd图82.设查找表为(16,15,20,53,64,7),(1)用冒泡法对该表进行排序(规定升序排列),写出每一趟的排序过程,通常对n个元素进行冒泡排序要进行多少趟冒泡?第j趟要进行多少次元素间的比较?(2)在排序后的有序表的基础上,画出对其进行折半查找所相应的鉴定树.(规定以数据元素作为树结点)3.如下是一棵二叉排序树,A1,A2,…A9代表1,2,3,…9中各个不同数字,(1)给出对该树中序遍历的结果(2)A3,A5,A7的值各为多少?(3)请在该树中再插入一个结点9.5作为叶结点,并使它仍然是一棵二叉排序树AA1A2A4A7A5A9A8A3A6图94.(1)设有查找表{5,14,2,6,18,7,4,16,3},依次取表中数据,构造一棵二叉排序树。(2)说明如何由序列的二叉排序树得到相应序列的排序结果,对上述二叉排序给出中序遍历的结果。5.(1)设有查找表{17,26,14,16,15,30,18,19,28},依次取表中数据构造一棵二叉排序树.(2)对上述二叉树给出后序遍历的结果(3).对上述二叉树给出中后序遍历的结果(4))在上述二叉树中查找元素15共要进行多少次元素的比较?6.(1)对给定权值2,1,3,3,4,5,构造哈夫曼树。(2)同样用上述权值构造另一棵哈夫曼树,使两棵哈夫曼树有不同的高度,并分别求两棵树的带权途径长度。四、程序填空题1.以下函数是二叉排序树的查找算法,若二叉树为空,则返回根结点的指针,否则,返回值是指向树结点的结构指针p(查找成功p指向查到的树结点,不成功p指向为NULL)完毕程序中的空格typedefstructBnode{intkey;structBnode*left;structBnode*right;}Bnode;Bnode*BSearch(Bnode*bt,intk)/*bt用于接受二叉排序树的根结点的指针,k用以接受要查找的关键字*/{Bnode*p;if(bt==___(1)_____)return(bt);p=bt;while(p->key!=__(2)______) ﻩ{if(k<p->key)ﻩﻩ___(3)_____;else___(4)_____;ﻩif(p==NULL)break;}return(___(5)_____);}}3.设有一个头指针为head的不带头结点单向链表,p、q是指向链表中结点类型的指针变量,p指向链表中结点a,(设链表中没有结点的数据域与结点a的数据域相同),写出相关语句(1).使该单向链表成为单向循环链表(2)插入结点s,使它成为a结点的直接前驱q=p;x=p->data;while(__(1)___)q=q->next;q->next=head;q=p;p=p->next;while(p->data!=x){q=p;__(2)___}s->next=p;__(3)___答案一、单项选择题1.C2.A3.A4.D5.D6.A7.B8.B9.A10.A11.B12.C13.D14.D15.B16.A17.A18.B19.A20.C21.C22.A23.D24.B25.C26.C27.B28.B29.B30.D二、填空题1.图状结构2.值域左指针3.154.2i和2i+15.(p->next)->prior=p->prior;6.顺序存储链式存储7.p->next=s;8.n9.abcdefg10.n+111.d=top->data;12.中序13.front==rear14.gdbeihfca15.A的第一个非零元素的下标为2,3,元素为1616.abdefcg17.518.对的19.二叉排序20.不对的21.22.主关键字23.不对的24.关键字相等的记录三、综合应用题1.(1)原序列1615205364715162053764n-1趟15162075364n-j次15167205364157162053647151620536471571520641653图102.(1)原序列1615205364715162053764n-1-j次15167205364157162053647151620536471571520641653图11(3)平均查找长度=(1*1+2*2+3*3)/6=14/63.24246167318514图12(2)中序遍历中序2,3,4,5,6,7,14,16,184.(1)2246167318514图13(2)中序遍历中序2,3,4,5,6,7,14,16,185.535341811763312wpl1=451871871131233465图15wpl2=45535341811763312wpl1=45四、程序填空题1.(1)NULL(2)k(3)p=p->left(4)p=p->right(5)p2.(1)&a(2)dnext=NULL(3)p->data(4)p=p->next(5)p!=NULL3.(1)q->next!=NULL(2)p=p->next;(3)q->next=s;4.(1)Postorder(BT->left)(2)Postorder(BT->right)(3)printf(“%c”,BT->data)期末练习三一、单项选择题1.数据结构在计算机内存中的表达是指()。A.数据元素之间的关系B.数据的存储结构C.数据元素的类型D.数据的逻辑结构2.在数据结构和算法中,与所使用的计算机有关的是()。A.数据元数间的抽象关系B.数据的存储结构C.算法的时间复杂度D.数据的逻辑结构3.结构中的元素之间存在多对多的关系是()。A.集合B.线性结构C.树形结构D.图状结构4.对顺序表,以下叙述中对的的是()。A.用一组地址连续的存储单元依次存放线性表的数据元素B.各个数据元素的首地址是连续的C.数据元素不能随机访问D.插入操作不需要移动元素5.设有一个长度为20的顺序表,要在第5个元素之前插入1个元素(也就是插入元素作为新表的第5个元素),则移动元素个数为()。A.15B.16C.5D.6.设有一个长度为25的顺序表,要删除第10个元素(下标从1开始),需移动元素的个数为()。A.9B.10C.15D.7.在一个尾指针为rear的不带头结点的单循环链表中,插入一个s所指的结点,并作为第一个结点,可执行()。A.rearnext=s;snext=rearnextB.rearnext=snext;C.rear=snextD.snext=rearnext;rearnext=s;8.设单向链表中,指针p指向结点A,若要删除A的直接后继,则所需修改指针的操作为()。A.p->next=p->next->next;ﻩB.p=p->next;C.p=p->next->next; D.p->next=p;9.元素a,b,c,d按顺序依次进栈,则该栈的也许输出序列是()(进栈出栈可以交替进行)。A.c,a,b,dB.d,b,c,aC.a,c,b,dD.d,c,a,b10.元素1,3,5,7按顺序依次进栈,按该栈的也许输出序列依次入队列,该队列的也许输出序列是()。(进栈出栈可以交替进行)。A.7,5,3,1B.7,3,1,5C.7,5,1,3D.5,1,3,711.从一个栈顶指针为top的链栈中取栈顶元素,用变量x保存该元素的值,则执行()。A.x=top->data;top=topnext;B.x=top->data;C.top=top->next;x=top->data;D.top=top->next;x=data;12.对一个栈顶指针为top的链栈进行进栈操作,设P为待进栈的结点,则执行()。A.p=top->next;top=topnext;B.p->next=top;C.p->next=top;top=p;D.top=p;13.设有一个对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),B数组共有55个元素,则该矩阵是()阶的对称矩阵。A.5B.20C.10D.1514.设有一个18阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则数组中第33号元素相应于矩阵中的元素是()。B.a7,6A.a10,8C.a9,215.设有一个18阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则数组中第53号元素相应于矩阵中的元素是()。A.a8,5,B.a10,8C.a8,1,D.a7,616.设有一个17阶的对称矩阵A,采用压缩存储的方式,将其下三角部分以行序为主序存储到一维数组B中(数组下标从1开始),则矩阵中元素a16在一维数组B中的下标是()。A.45,B.18C17.以下程序段的结果是c的值为()。char*a[5]={“12378”,“1237”,“1236789”,“1237”,inti,c=0;for(i=0;i<5:i++)if(StrCmp(a[i],“1237”A.2,B.5C.0D.123718.串函数StrCmp(“ABCd”,“ABCD”)的值为()。A.0B.-119.一棵采用链式存储的二叉树中,共有n个指针域被有效使用(即指针域为非空)。该二叉树有()个结点。A.n+1B.nC.n-1D.n-220.一棵采用链式存储的二叉树中有n个指针域为空,该二叉树共有()个结点。A.n+1B.nC.n-1D.n-221.在一棵二叉树中,若编号为i的结点是其双亲结点的右孩子,则双亲结点的顺序编号为()。A.i/2.0B.i/2+1C.2i+122.设一棵哈夫曼树共有n个非叶结点,则该树有()个结点。A.2nB.2n+2C.2n-1D.2n+123.设一棵采用链式存储的二叉树,除叶结点外每个结点度数都为2,该树结点中共有2n个指针域为空。则该树有()个叶结点。A.2nB.2n+1C24.一棵结点数31<n<40的完全二叉树,最后一层有4个结点,则该树有()个叶结点A.18B.17C.3625.已知如图1所示的一个图,若从顶点a出发,按广度优先搜索法进行遍历,则也许得到的一种顶点序列为()。A.acedfbB.aecfdbC.aecdfbD.acebfdbbdfeca图126.已知如图1所示的一个图,若从顶点a出发,按深度优先搜索法进行遍历,则也许得到的一种顶点序列为()。A.abedfcB.acfebdC.aebcfdD.aedfbc27.一组记录的关键字序列为(42,37,62,40,32,92),运用快速排序算法,以第一个关键字为分割元素,算法通过一次划分后结果为()。A.32,37,40,42,62,92B.37,32,40,42,62,92C.32,40,37,42,62,92D.32,37,42,40,62,9228.一组记录的关键字序列为(46,20,30,79,56,38,40,84,90,110),运用快速排序,以第一个关键字为分割元素,通过一次划分后结果为()。A.20,30,40,38,46,79,56,84,90,100B.40,20,30,38,46,56,79,84,90,110C.30,20,40,38,46,84,56,79,90,100D.20,3038,40,46,56,79,84,90,10029.一组记录的关键字序列为(80,57,41,39,46,47),运用堆排序(堆顶元素是最小元素)的方法建立的初始堆为()。A.39,46,41,57,80,47B.39,47,46,80,41,57C.41,39,46,47,57,80D.39,80,46,47,41,57bbdfeca图230.一组记录的关键字序列为(75,63,95,80,53,45,38,20),运用堆排序(堆顶元素是最大元素)的方法建立的初始堆为()。A.95,80,75,63,53,45,38,20B.95,63,75,80,53,45,38,20c.95,80,45,63,53,75,38,20D.95,80,75,20,53,45,38,63二、填空题1.数据元素可以有一个或________组成。2.数据元素之间的抽象关系称为________结构。3.结构中的数据元素存在一对一的关系称为线性结构。而数据元素存在_______的关系称为图状结构。4.规定在n个数据元素中找值最大的元素,其基本操作为________。算法的时间复杂度为_______。5.设有一个长度为25的顺序表,要删除前3个元素,则最少要移动元素的个数为()。6.设有一个长度为25的顺序表,第8号元素到第25号元素依次存放的值为8,9,10,11,…,25,某人想要删除第8个元素,他的做法是从第25号元素开始,直到第9号元素依次向前移动1个位置,其结果新表中第9号元素的值为()。7.在双向链表中,要删除p所指的结点,其中所用的一条语句(p->prior)->next=p->next;的功能是:使P所指结点的直接前驱的右指针指向________。8.在双向链表中,要在p所指的结后插入q所指的结点(设q所指的结点已赋值),可以先用语句q->next=p->next;(p->next)->prior=q;然后再用语句q->prior=p;和语句________。9.设有一个头指针为head的单向链表,p指向链表中的某结点,若要使该链表成为单向循环链表,可用语句while(p->next!=NULL)p=p->next;和________。10.在一个单向链表中,要删除p所指结点的直接后继结点。则可以用操作________。(用一条语句)11.向一个栈顶指针为top的链栈中插入一个p所指结点时,某人用语句top=p;p->next=top;这样做的结果使p所指向的结点的指针域指向了_______。12.向一个栈顶指针为top的链栈中插入一个p所指结点时,可执行________操作。(填两条语句,结点的指针域为next)13.在一个链队中,设front和rear分别为队头和队尾指针,则s所指结点(数据域已赋值)的入队操作为s->next=NULL;.________和rear=s;14.在一个带头结点的链队中,设front和rear分别为队头和队尾指针,则删除一个结点的操作为p=front->next;_______=p->next;(结点的指针域为next,p为辅助用指针)15.设有n阶对称矩阵A,用一维数组s压缩存储A的下三角元素,s的下标从零开始,元素s[26]相应于A中的元素为_______。16.设有n阶对称矩阵A,用一维数组s压缩存储A的下三角元素,s的下标从零开始,最后一个元素的下标为27,则n=_______。17.对稀疏矩阵进行压缩存储,可采用三元组表,设a是稀疏矩阵A相应的三元组表类型(结构体类型)变量,a中的一个成员项是三元组类型的结构体数组data,按书中定义,若data的下标从零开始,最后一个元素下标为10,又data[10].i=8;a.data[10].j=5;a.data[10].v=36;它提供的A数组的相关信息有_______。18.一棵3度的树,其中3度结1个,2度结2个,1度结2个,则该树共有_______个叶结点。19.设有一棵有78个结点的完全二叉树,该树共有_________层。(根所在结点为第1层)20.一棵有7个叶结点的二叉树,其1度结点数的个数为2,则该树共有_______个结点。21.对于一棵具有________个结点的二叉树,其相应的链式存储结构中共有n+1个指针域空.22.如图2所示的二叉树,其中序遍历序列为_________。23.如图2所示的二叉树,其中序遍历序列为_________。4g4g3f9a7b58e6c图33c3c7gd65e4dc2b18hd9图424.二叉排序树或者是一棵空树,或者是一棵具有下列性质的二叉排:若它的左子树非空,则左子树的所有结点的值都小于它的根结点的值;若它的右子树非空,则右子的所有结点的值都大于(若允许结点有相同的值,则大于等于)它的根结点的值。这种说法是__________的。(回答对的或不对的)三、综合题1.(1)已知某二叉树的后序遍历序列是debca,中序遍历序列是dbeac,试画出该二叉树。(2)若上述二叉树的各个结点的字符分别代表不同的整数(其中没有相等的),并恰好使该树成为一棵二叉排序树,试给出a、b、c、d、e的大小关系。(3)给出该树的前序遍历序列。2.(1)以3,4,5,8,9,10作为叶结点的权,构造一棵哈夫曼树。(2)给出相应权重值叶结点的哈夫曼编码。(2)一棵哈夫曼树有2n-1个结点,它是共有多少个权重值构造而成的?简述理由?3.(1)运用筛选过程把序列{42,82,67,102,16,32,57,52}建成堆(小根堆),画出相应的完全二叉树(不规定中间过程)。(2)写出对上述堆相应的完全二叉树进行中序遍历得到的序列。4.(1)简述拓扑排序的环节。(2)说明有向图的拓扑序列不一定是唯一的因素。(3)如何运用拓扑排序算法鉴定图是否存在回路。(4)设有向图G如下,写出一方面删除顶点1的3种拓扑序列。11234543465图55.设查找表为(11,12,13,14,15,16,17,18,19,20,21),元素的下标从0开始。(1)画出对上述查找表进行折半查找所相应的鉴定树(树中结点用数值表达)(2)说明成功查找到元素15,19各需要通过多少次比较?(3)说明查找不到元素10,15.5各需要通过多少次比较?(4)給出中序遍历鉴定树的序列。6.设有序表为(21,22,23,24,25,26,27,28,29,30,31,32),元素的下标从0开始。(1)说出有哪几个元素需要通过4次元素间的比较才干成功查到。(2)画出对上述有序表进行折半查找所相应的鉴定树(树结点用数值表达)(3)设查找元素为5,需要进行多少次元素间的比较才干拟定不能查到。(4)求在等概率条件下,成功查找的平均比较次数?四、程序填空题1.以下程序是折半插入排序的算法设待排序的记录序列存放在a[1],…a[n]中,以a[0]作为辅助工作单元,以下程序是要把a[i]插入到已有序的序列a[1],…a[i-1]中。voidbinsort(NODEa[],intn){intx,i,j,s,k,m;for(i=2;i<=__(1)___;i++){a[0]=a[i];x=a[i].key;s=1;j=i-1;while(s<=j){m=__(2)___if(x<a[m].key)__(3)___else__(4)___}for(k=i-1;k>=j+1;k--)__(5)___=a[k];a[j+1]=a[0];}}2.以下程序是快速排序的算法设待序的记录序列存放在a[start],…a[end]中,按记录的关键字进行快速排序,先进行一次划分,再分别进行递归调用voidquicksort(NODEa[],intstart,intend){inti,j;NODEmid;if(start>=end)return;i=start;j=end;mid=a[i];

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论