《数据构造课后习题及答案.docx》由会员分享,可在线阅读,更多相关《数据构造课后习题及答案.docx(31页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、数据构造课后习题及答案.doc填空题10*1=10一、概念题2.2.当对一个线性表经常进行的是插入和删除操作时,采用链式存储构造为宜。2.3.当对一个线性表经常进行的是存取操作,而很少进行插入和删除操作时,最好采用顺序存储构造。2.6.带头结点的单链表L中只要一个元素结点的条件是L-Next-Next=Null。3.6.循环队列的引入,目的是为了克制假溢出。4.2.长度为0的字符串称为空串。4.5.组成串的数据元素只能是字符。4.8.设T和P是两个给定的串,在T中寻找等于P的子串的经过称为形式匹配,又称P为形式。7.2.为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列
2、存放被访问的结点实现遍历。5.7.广义表的深度是广义表中括号的重数7.8.有向图G可拓扑排序的判别条件是有无回路。7.9.若要求一个稠密图的最小生成树,最好用Prim算法求解。8.8.直接定址法法构造的哈希函数肯定不会发生冲突。9.2.排序算法所花费的时间,通常用在数据的比拟和交换两大操作。1.1.通常从正确性可读性强健性时空效率等几个方面评价算法的包括程序的质量。1.2.对于给定的n元素,能够构造出的逻辑构造有集合关系线性关系树形关系图状关系四种。1.3.存储构造主要有顺序存储链式存储索引存储散列存储四种。1.4.抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储构造无关,即不管其内部构造
3、怎样变化,只要它的数学特性不变,都不影响其外部使用。1.5.一个算法具有五大特性:有穷性确定性可行性,有零个或多个输入有一个或多个输入。2.8.在双向链表构造中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s-prior=p-prior;s-next=p;p-prior-next=s;p-prior=s;。2.9.在单链表中设置头结点的作用是不管单链表能否为空表,头结点的指针均不空,并使得对单链表的操作如插入和删除在各种情况下统一。3.1.队列是限制在表的一端进行插入和在另一端进行删除的线性表,其运算遵循先进先出原则。3.2.栈是限定尽在表位进行插入或删除操作的线性表
4、。3.5.在链式队列中,断定只要一个结点的条件是(Q-rear=Q-front)&(Q-rear!=NULL)。3.7.已知链队列的头尾指针分别是f和r,则将x入队的操作序列是node*p=(node*)malloc(node);p-next=x;p-next=NULL;if(r)r-next=p;r=p;elser=p;f=p;。3.8.循环队列的满与空的条件是(rear+1)%MAXSIZE=fornt和(front=-1&rear+1=MAXSIZE)。4.3.串是一种特殊的线性表,其特殊性表如今数据元素都是由字符组成。4.7.字符串存储密度是串值所占存储位和实际分配位的比值,在字符串的
5、链式存储构造中其结点大小是可变的。5.3.所谓稀疏矩阵指的是矩阵中非零元素远远小于元素总数,则称该矩阵为矩阵中非零元素远远小于元素总数,则称该矩阵为稀疏矩阵。5.4.一维数组的逻辑构造是线性构造,存储构造是顺序存储构造;对二维或多维数组,分别按行优先和列优先两种不同的存储方式。7.4.在有向图的邻接矩阵表示中,计算第i个顶点入度的方法是求邻接矩阵中第i列非0元素的个数。7.10.AOV网中,结点表示活动,边表示活动之间的优先关系,AOE网中,结点表示事件,边表示活动。9.1.按排序经过中根据不同原则对内部排序方法进行分类,主要有选择排序交换排序插入排序归并排序等4类。9.3.在堆排序、快速排序
6、和归并排序中若只从排序结果的稳定性考虑,则应选择归并排序方法;若只从平均情况下排序最快考虑,则应选择快速排序方法;若只从最坏情况下排序最快且要节省类存考虑,则应选择堆排序方法。9.4.直接插入排序用监视哨的作用是存当前要的插入记录,可又省去查找插入位置时对能否出界的判定。9.6.设表中元素的初始状态是按键值递增的,则直接插入排序最省时间,快速排序最费时间。4.9.下列程序判定字符串s能否对称,对称则返回1,否则返回0;如?(“abba)返回1,?abab返回0.Intf(char*s)Inti=0,j=0;/*求串长*/for(j-;i=j);二、结论题2.7.在具有n个结点有序单链表中插入一
7、个新结点并仍然有序的时间复杂度为O(n)。2.10.对于一个具有n个结点的单链表,在已知的结点*p后插入一个新结点的时间复杂度为O(1),在给定值为x的结点后插入一个新结点的时间复杂度为O(n)。4.1.设正文产长度为n,形式串长度为m,则简单形式匹配算法的时间复杂度为O(m*n)。9.5.对n个记录进行快速排序时,递归调用而是用的栈所能到达的最大深度为O(n),平均深度为O(log2n)。7.1.克鲁斯卡尔算法的时间复杂度为O(eloge),它对稀疏图较为适宜。6.3.在一棵二叉树中,度为0的结点的个数为N0,度为2的结点个数为N2,则有N0=N2+1。6.8深度为k的完全二叉树至少有2k-
8、1个结点,至多有2k-1个结点。7.3.具有n个结点e条边的有向图和无向图用邻接表表示,则邻接表的边结点个数分别为e和2e条。7.5.若n个顶点的连通图是一个环,则它有n棵生成树。7.6.n个顶点的连通图用连接矩阵表示时,该矩阵至少有2(n-1)个非零元素。7.7.有n个顶点的有向图,至少需要n条弧才能保证是连通的。9.7.归并排序除了在递归是现实所用的log2n个栈空间外,还用n个辅助空间。2.1.对于采用顺序存储构造的线性表,当随机插入一个数据元素时,平均移动表中n/2元素;删除一个数据元素时,平均移动表中(n-1)/2元素。2.4.在一个长度为n的顺序存储构造的线性表中,向第i个元素1i
9、n+1)之前插入一个新元素时,需向后边移动n-i+1个元素。2.5.从长度为n的采用顺序存储构造的线性表中删除第i个元素1in,需向前移动n-1个元素。3.4.当两个栈分享一存储区时,存储区用一维数组stack1,n表示,两栈顶指针为top【1】与top【2】,则当栈1空时。top【1】为0,栈2空时top【2】为n+1,栈满的条件是top1+1=top2。8.1.顺序查找n个元素的顺序表,若查找成功,则比拟关键字的次数最多为n次;当使用监视哨时,若查找失败,则比拟关键字的次数为n+1。6.5.设一颗完全二叉树叶子结点数为k,最后一层结点数为偶数时,则该二叉树的高度为()2log2k1-?+1
10、,最后一层结点数为奇数时,则该二叉树的高度为()2log2k?+1。9.8.对n个记录建立一个堆的方法是:首先将要排序的所有记录分到一棵二叉树的各个结点中,然后从i=n/2?的结点ki,逐步把以kn/2,kn/2-1kn/2-2,为根的子树排成堆,直到以k1根的树排成堆,就完成了初次建堆的经过。三、计算题4.4.StrIndex(“MYSTUDENT,STU)=4。5.5.求下列广义表的运算结果:GetTailGetHeada,b,c,d=b。6.7.已知二叉树先序为,中序为,则后序一定是DGEBFCA。5.8.广义表a,a,b,d,e,i,j,k的长度是5,深度是3。6.9.具有10个叶子的
11、哈夫曼树,其最大高度为9,最小高度为5。6.1.已知二叉树有50个叶子结点,则该二叉树的总结点数至少是99。6.10.设F是一个森林,B是由F转换得到的二叉树,F中有n个非终端节点,则B中右指针域为空的结点有n+1个。3.10.表达式23+12*13-2/4+34*5/7+108/9的后缀表达式是23123*2-4/345*7/+1089/+。3.3.用s表示入栈操作。X表示出栈操作,若元素入栈的顺序为1,2,3,4,为了得到1,3,4,2出栈顺序,相应的s和x的操作串为SXSSXSXX。5.6.广义表A=a,b,c,d,e,取出A中的原子e的操作是:GetTail(GetTail(GetTa
12、il(GetHead(A)。9.10.一组记录的键值为12,38,35,25,74,50,63,90,按二路归并排序方法对该序列进行一趟归并后的结果是12,38,25,35,50,74,63,90。3.9.一个栈的输出序列是,1,2,3,4,5,则不同的输出序列有42种4.6.设串S的长度为4,则S的子串个数最多为10。6.6.有5种不同形态的二叉树能够按中序遍历得到一样的abc序列。9.9.若用冒泡排序对关键字序列50,45,35,19,9,3进行从小到大的排序,所需进行的关键字比拟总次数是15。5.1.二维数组A68采用行序为主方式存储,每个元素占4个储存单元,已知A的起始储存地址基地址是
13、1000,则A23的地址是1076。6.4.叶子权值5,6,17,8,19所构造的哈夫曼树带权途径长度为121。8.2.在顺序表8,11,15,19,25,26,30,33,42,48,50中,用折半法查找关键字20,需要的关键字比拟次数为4。8.3.对于具有144个记录的文件,若采用分块查找法,且每块长度为8,则平均查找长度为8.25或14。5.2.设数组A910,数组中任一元素均占内存48个二进制位,从首地址2000开场连续存放在主内存里,主内存字长为16位,那么:1存放该数组至少需要的单元数是270。2存放数组的第8列的所有元素至少需要的单位数是27。3数组按列存储时,元素A58的起始地
14、址是2231。选择题15*1=15一、叙述类1.1.根据数据元素之间关系的不同性,下面解释错误的是。A集合中任何两个结点之间都有逻辑关系但组织形式松懈B线性构造中结点构成1对1的关系C树形构造具有分支、层次特性,其形态有点像自然界中的树D图状构造中的各个结点按逻辑关系相互缠绕,任何两个结点都能够邻接1.2.关于逻辑构造,下面讲法错误的是。A逻辑构造是独立于计算机的B运算的定义与逻辑构造无关C同一逻辑构造能够采用不同的存储构造D一些外表上很不一样的数据能够有一样的逻辑构造E逻辑构造是数据组织的某种“本质性的东西1.3.下面关于算法的讲法正确的是。A算法的时间效率取决于算法所花费的CPU时间B在算
15、法设计中不能用牺牲空间代价来换取好的时间效率C算法必须具有有穷性、确定性等5个特性D通常用时空效率来衡量算法的优劣1.4.下面关于算法讲法错误的是。A计算机程序一定是算法B算法只能用计算机高级语言来描绘C算法的可行性是指指令不能有二义性D以上几个都是错误的1.6.下面讲法正确的是。A数据元素是数据的最小单位B数据项是数据的基本单位C原子类型不可再分解D数据项只能是原子类型2.1.线性表是A.一个有限序列,能够为空B.一个有限序列,不能为空C.一个无限序列,能够为空D.一个无限序列,不能为空2.3.线性表采用链式存储时,其各元素存储地址。A.必须是连续的B.部分地址必须是连续的C.一定是不连续的
16、D.连续与否均能够2.4.用链表表示线性表的优点是。A.便于随机存取B.花费的存储空间较顺序存储少C.便于插入和删除D.数据元素的物理顺序与逻辑顺序一样2.5.插入、删除速度快,但不能随机存取。A.链接表B.顺序表C.顺序有序表D.上述三项无法比拟2.6.若希望从链表中快速确定一个结点的前驱,则链表最好采用方式。A.单链表B.循环单链表C.双向链表D.任意2.7.下面关于线性表的叙述错误的是。A.线性表采用顺序存储,必须占用一片地址连续的单元B.线性表采用顺序存储,便于进行插入和删除操作C.线性表采用链式存储,不必占用一片地址连续的单元D.线性表采用链式存储,便于进行插入和删除操作2.9.若某
17、线性表中最常用的操作的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用存储方法最节省运算时间。A.单链表B.仅有头指针的单循环链表C.双链表D.仅有尾指针的单循环链表3.1.栈和队列的共同点是。A.都是先进先出B.都是先进后出C.只允许在端点处插入和删除元素D.没有共同点3.4.递归经过或函数调用时,处理参数及返回地址,要用一种称为的数据构造。A.队列B.多维数组C.栈D.线性表3.6.用链式存储的队列,在进行删除运算时。A.仅修改头指针B.仅修改尾指针C.头、尾指针都要修改D.头、尾指针可能都要修改3.7.栈应用在。A.递归调用B.子程序调用C.表达式求值D.A,B,C4.1.如
18、下陈述中正确的事A.串是一种特殊的线性表B.串的长度必须大于零C.串中元素只能是字母D.空串就是空白串4.2.设有两个串p和q,其中q是p的子串,求q在p中初次出现的位置的算法称为A.求子串B.连接C.匹配D.求串长4.4.串是A.不少于一个字母的序列B.任意个字母的序列C.串中所含不同字符的个数D.串中所含非空格字符的个数4.5.串的长度是指A.串中所含不同字母的个数B.串中所含字符的个数C.串中所含不同字符的个数D.串中所含非空格字符的个数5.4.对矩阵压缩储存是为了A方便压缩B.节省空间C.方便存储D.提高运算速度6.1.假如T2是由树T转换而来的二叉树,那么对T中结点的后根遍历就是对T
19、2中结点的遍历。A先序B中序C后序D层次序6.4.二叉树在线索后,仍不能有效求解的问题是。A先序线索二叉树中求先序后继B中序线索二叉树求中序后继C中序线索二叉树中求中序前驱D后序线索二叉树中求后序后继6.8某二叉树的先序遍历序列和后序遍历序列正好相反,则此二叉树一定是。A空或只要一个结点B完全二叉树C单枝树D高度等于结点数6.9.在二叉树结点的先序序列,中序序列和后序序列中,所有叶子结点的先后顺序。A都不一样B完全一样C先序和中序一样而后序不同D中序和后序一样而与先序不同7.5.图的广度优先搜索类似于树的遍历。A.先序B.中序C.后序D.层次7.8.下面方法能够判定出一个有向图能否有环回路。A
20、.深度优先遍历B.拓扑排序C.求最短途径D.求关键途径7.9.在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是。A.G中有弧B.G中有一条从Vi到Vj的途径C.G中没有弧D.G中有一条从Vj到Vi的途径7.10.下列关于AOE网的叙述中,不正确的是。A.关键活动不按期完成就会影响整个工程的完成时间B.任何一个关键活动提早完成,那么整个工程将会提早完成C.所有的关键活动提早完成,那么整个工程将会提早完成D.某些关键活动提早完成,整个工程将会提早完成8.3.当采用分块查找时,数据的组织方式为A.数据分块若干块,每块内数据有序B.数据分成若干块,每块内数据不必有序,但块间必
21、须有序,每块内最大或最小的数据组成索引块C.数据分成若干块,每块内数据有序,每块内最大或最小的数据组成索引块D.数据分成若干块,没块除最后一块外中数据个数需一样8.5.下面关于折半查找的叙述正确的是。A.表必须有序,表能够顺序方式存储,可以以链表方式存储B.表必须有序且表中数据必须是整型,实型或字符型C.表必须有序,而且只能从小到大排序D.表必须有序,且表只能一顺序方式存储8.11.下面关于哈希查找的讲法正确的是A.哈希函数构造的越复杂越好,由于这样随机性好、冲突小B.除留余数法是所有哈希函数中最好的C.不存在十分好与坏的哈希函数,要视情况而定D.若需在哈希表中删去一个元素,不管用何种方法解决
22、冲突都只要简单地将该元素删去即可8.12.将10个元素散列到100000个单元的哈希表中,则产生冲突。A.一定会B.一定不会C.仍可能会9.1.下列排序算法中,其中是稳定的。A.堆排序和冒泡排序B.快速排序和堆排序C.简单项选择择排序和归并排序D.归并排序和冒泡排序9.3.下面时间复杂度不是Onlog2n的排序方法是。A.堆排序B.直接插入排序C.二路归并排序D.快速排序9.4.若需在Onlog2n的时间内完成对数组的排序,且要求排序是稳定的,则能够选择的排序方法是。A.快速排序B.堆排序C.直接插入排序D.归并排序9.7.在待排序的元素序列基本有序的前提下,效率最高的排序方法是。A直接插入排
23、序B.快速排序C.简单项选择择排序D.归并排序9.8.就排序算法所用的辅助空间而言,堆排序、快速排序、归并排序的关系是。A.堆排序归并排序快速排序D.堆排序快速排序归并排序9.9.一个序列有10000个元素,若只想得到其中前10个最小的元素,最好采用方法。A.二路归并排序B.直接选择排序C.Shell排序D.堆排序9.10.设有字符序列Q,H,C,Y,P,A,M,S,R,D,F,X,新序列D,H,C,F,P,A,M,Q,R,S,Y,X是下列算法一趟排序的结果。A.冒泡排序B.初始步长为4的Shell排序C.二路归并排序D.快速排序二、数字类1.5.程序段for(i=n-1;i=0;i-)for
24、(j=1;jAj+1Aj与Aj+1互换;其中n为正整数,则最后一行的语句频度在最坏情况下是。A.O(n)B.O(n2)C.O(n3)D.O(nlog2n)2.2.从一个具有n个结点的单链表中查找值为x结点,在查找成功情况下,需要平均比拟个结点。A.nB.n/2C.n-1/2D.n+1/22.8.带头结点的单链表head为空的断定条件是。A.head=NULLB.headnext=NULLC.headnext=headD.head!=NULL2.10.在循环双链表的p所指结点之后插入s所指结点的操作是。A.pnext=s;sprior=p;pnextprior=s;snext=pnext;B.p
25、next=s;pnextprior=s;sprior=p;snext=pnext;C.sprior=p;snext=pnext;pnext=s;pnextprior=s;D.sprior=p;snext=pnext;pnextprior=s;pnext=s;3.2.若一个栈的输入序列为1,2,3,n,输出序列的第一个元素是n,则第i个输出元素是。A.n-i-1B.n-iC.n-i+1D.不确定3.3.设a,b,c,d,e,f以给定的次序进栈,若在进栈操作时,允许出栈操作,则下面得不到的序列为。A.f,e,d,c,b,aB.b,c,a,f,e,dC.d,c,e,f,b,aD.c,a,b,d,e,
26、f3.5.若一个栈以向量V1.n存储,初始栈顶指针top为n+1,则下面x入栈的正确操作是。A.top=top+1;Vtop=xB.Vtop=x;top=top+1C.top=top-1;Vtop=xD.Vtop=x;top=top-13.8.中级表达式A-(B+C/D)E的后缀形式是。A.AB-C+D/EB.ABC+D/EC.ABCD/E+-D.ABCD/+E-3.9、假设以数组A【m】存放循环队列的元素,其头尾指针分别为front和rear,则当前队列中的元素个数为A、(rear-front+m)%mB、rear-front+1C、front-rear+m%mD、rear-front%m3
27、.10、循环队列存储在数组A【0.m】中,则入队时队尾的操作为A、rear=rear+1B、rear=rear+1%m-1C、rear=rear+1%mD、rear=rear+1%m+13.11、若元素a,b,c,d,e,f依次进栈,允许进栈,退栈操作交替进行,单不允许连续三次进行进退栈工作,则不可能得到的出栈序列是A、dcebfaB、cbdaefC、dbcaefD、afedcb3.12、某队列允许在其两端进行入队操作,但仅允许再一端进行出队操作,则不可能得到的顺序是A、bacdeB、dbaceC、dbcaeD、ecbad3.13、假如栈s和队列q的初始状态均为空,元素a,b,c,d,e,f,
28、g依次进入栈s,假如每个元素出栈立即进入队列q,且7个元素出队的顺序是b,d,c,f,e,a,g,则栈s的容量至少是A、1B、2C、3D、44.3.串“ababaaababaa的next数组为A.012345678999B.012121111212C.011234223456D.0123012322344.6.若s=1234ab567abcdab0,t=ab,r=(空串),串替换StrRep(s,t,r)的结果是A.1234ab567abcdab0B.1234ab567abcdC.1234567cd0D.1234567cd04.7.S为一个长度为n的字符串,其中字符各不一样,则S中的互逆的非平凡子串非空且不同于S本身的个数A.2n-1B.n2C.(n2/2)+(n/2)D.(n2/2)+(n/2)-14.8.若串S=English,其中串的个数是A.9B.16C.36D.285.1.数组A56的每个元素占5个字节,将其按列优先次序存储在起始地址为1000的内存单元中,则元素A45的地址是11455.2.若对n阶对称矩阵A以行序为主序方式将其下三角的元素包括主对角线上所有元素依次存放于一维数组B1.(nn+1)/2中,aoo存放于数组B1中,则在B中确认定aiji