版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据结构-C语言版第一章绪论单项选择题1在数据结构中,数据的基本单位是。A.数据项B.数据类型C.数据元素D.数据变量2数据结构中数据元素之间的逻辑关系被称为_。A.数据的存储结构B.数据的基本操作C.程序的算法D.数据的逻辑结构3在数据结构中,与所使用计算机无关的是数据的_。A.存储结构B.逻辑和物理结构C.逻辑结构D.物理结构4在链式存储结构中,数据之间的关系是通过体现的。A.数据在内存的相对位置B.指示数据元素的指针C.数据的存储地址D.指针5计算算法的时间复杂度是属于一种_。A.事前统计的方法B.事前分析估算的方法C.事后统计的方法D.事后分析估算的方法6在对算法的时间复杂度进行估计的
2、时候,下列最佳的时间复杂度是_。A. n2B.nlognC.nD.logn7.设使用某算法对n个元素进行处理,所需的时间是T(n)=100nlog2n+200n+2000,则该算法的渐近时间复杂度为_。A. O(1)B.O(n)C.O(200n)D.O(nlog2n)19CDCBBDD第二章线性表单项选择题1链表不具有的特点是。A.可随机访问任一元素B.插入和删除时不需要移动元素C.不必事先估计存储空间D.所需空间与线性表的长度正比2. 设顺序表的每个元素占8个存储单元。第1个单元的存储地址是100,则第6个元素占用的最后一个存储单元的地址为。A.139B.140C.147D.1483. 在线
3、性链表存储结构下,插入操作算扌。A.需要判断是否表满B.需要判断是否表空C.不需要判断表满D.需要判断是否表空和表满4. 在一个单链表中,若删除p所指结点的后继结点,则执行。A.p->next=p->next->next;B.p->next=p->next;C.p=p->next->next;D.p=p->next;p->next=p->next->next;5将长度为n的单链表接在长度为m的单链表之后的算法时间复杂度为。A.O(n)B.O(1)C.O(m)D.O(m+n)6. 需要预分较大空间,插入和删除不需要移动元素的线性表
4、,其存储结构。A.单链表B.静态链表C.线性链表D.顺序存储方式ACCABB填空题1. 在带表头结点的单链表中,当删除某一指定结点时,必须找到该结点白结点。2在单链表中,指针p所指结点为最后一个结点的条件。3将两个各有n个元素的有序表归并成一个有序表,其最少的比较次数。4.在一个长度为n的顺序表中第i个元素(1WiWn)之前插入一个元素时,需向后移动元素的个数是。5在长度为n的顺序表中插入一个元素的时间复杂度为。1前驱2_p->next=NULL3.14. n-i+15.O(n)例题解析【例2-1】编写一个算法将一个单链表逆转,要求在原表上进行,不允许重新建链表。解:该算法可以在遍历原表
5、的时候将各结点的指针逆转,从原表的第一个结点开始,头结点的指针在最后修改成指向原表的最后一个结点,即新表的第一个结点。实现本题功能的函数如下:voidinverse(Lnode*h)s=h->next;if(s=NULL)return;q=NULL;p=s;while(p!=NULL)p=p->next;s->next=q;/*逆转指针*/q=s;/*指针前移*/s=p;h->next=q;/*头指针h的后继是p*/【例2-2】编写一算法将两个按元素值递增有序排列的单链表A和B归并成一个按元素值递增有序排列的单链表Co解:对于两个或两个以上的,结点按元素值有序排列的单链
6、表进行操作时,应采用“指针平行移动,依次扫描完成”的方法。从两表的第一个结点开始顺链表逐个将对应数据元素进行比较,复制小的并插入c表尾。当两表中之一已到表尾,则复制另一个链表的剩余部分,插入到c表尾。设pa、pb分别指向两表当前结点,p指向c表的当前表尾结点。若设A中当前所指的元素为a,B中当前所指的元素为b,则当前应插入到C中的元素c为faa<bCba>b例如:A=(3,5,8,ll)B=(2,6,8,9,11,15,20)则C=(2,3,5,6,8,8,9,11,11,15,20)实现本题功能的函数如下:Lnode*hb(Lnode*pa,Lnode*pb)Lnode*p,*q
7、,*pc;pc=(Lnode*)malloc(sizeof(Lnode);/*建立表c的头结点pc*/p=pc;/*p指向C表头结点*/while(pa!=NULL&&pb!=NULL)q=(Lnode*)malloc(sizeof(Lnode);/*建立新结点q*/if(pb->data<pa->data)/*比较A、B表中当前结点的数据域值的大小*/q->data=pb->data;/*B中结点值小,将其值赋给q的数据域*/pb=pb->next;/*B中指针pb后移*/elseq->data=pa->data;/*相反,将A
8、结点值赋给q的数据域*/pa=pa->next;/*A中指针pa后移*/p->next=q;/*将q接在p的后面*/p=q;/*p始终指向C表当前尾结点*/while(pa!=NULL)/*若表A比B长,将A余下的结点链在C表尾*/q=(Lnode*)malloc(sizeof(Lnode);q->data=pa->data;pa=pa->next;p->next=q;p=q;while(pb!=NULL)/*若表B比A长,将B余下的结点链在C表尾*/q=(Lnode*)malloc(sizeof(Lnode);q->data=pb->data;
9、pb=pb->next;p->next=q;p=q;p->next=NULL;p=pc;/*p指向表C的头结点pc*/pc=p->next;/*改变指针状态,使pc指向p的后继*/free(p);return(pc);/*释放p空间*/此算法的时间复杂度为O(m+n),其中m,n分别是两个被合并表的表长。第三章栈和队列单项选择题1. 在初始为空的堆栈中依次插入元素f,e,d,c,b,a以后,连续进行了三次删除操作,此时栈顶元素。A.cB.dC.bD.e2. 若某堆栈的输入序列是1,2,3,.,n,输出序列的第一个元素为n,则第i个输出元素为。A.iB.n-iC.n-i+
10、1D.哪个元素无所谓3. 向一个栈顶指针为h的带头结点链栈中插入指针s所指的结点时,应执行。A.h->next=s;B.s->next=h;C.s->next=h;h=h->next;D.s->next=h->next;h->next=s;4. 一个栈的入栈序列是a,b,c,d,e,则栈的不可能的输出序列是_A.edcbaB.decbaC.dceabD.abcde5.栈和队列的共同点是。A. 都是先进后出C.只允许在端点处插入和删除元素6.对于循环队列。A.无法判断队列是否为空C.队列不可能满B.都是先进先出D.没有共同点B.无法判断队列是否为满D.以
11、上说法都不是7. 若用一个大小为6的数组来实现循环队列,且当前队尾指针rear和队头指针front的值分别为0和3。当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为.A.1和5B.2和4C.4和2D.5和18. 判定一个循环队列QU(最多元素为m0)为满队列的条件是A.QU->front=QU->rearB. QU->front!=QU->rearC. QU->front=(QU->rear+1)%m0D.QU->front!=(QU->rear+1)%m09判定一个循环队列QU(最多元素为m0)为空的条件。A.QU-&g
12、t;front=QU->rearC.QU->front=(QU->rear+1)%m0B. QU->front!=QU->rearD. QU->front!=(QU->rear+1)%m0BCDCCDACA填空题1在求表达式值的算符优先算法中使用的主要数据结构。2. 设有一个空栈,现输入序列为1,2,3,4,5。经过push,push,pop,push,pop,push,pop,push后,输出序列。3. 仅允许在同一端进行插入和删除的线性表称为。7在顺序栈s中,栈为空的条件是,栈为满的条件是。4. 用S表示入栈操作,X表示出栈操作,若元素入栈顺序为1
13、234,为了得到1342出栈顺序,相应的S、X操作串为。5用一个大小为1000的数组来实现循环队列,当前rear和front的值分别为0和994,若要达到队满的条件,还需要继续入队的元素个数。1.栈2. _2343. 栈4. s.top=s.base,s.top-s.base>=s.stacksizeSXSSXSXX5.993例题解析【例3-1】编程实现:用除法把十进制数转换成二进制数。解:算法思想:用初始十进制数除以2把余数记录下来并且若商不为0则再用商去除以2直到商为0,这时把所有的余数按出现的逆序排列起来(先出现的余数排在后面,后出现的余数排在前面)就得到了相应的二进制数,如把十进
14、制数35转换成二进制数的过程如图3-1所示。35170余数结果:100111A图3-1十进制数转换成二进制数的过程由题意可知,我们可以用一个栈来保存所有的余数,当商为0时则让栈里的所有余数出栈则可以得到正确的二进制数,算法可描述如下:voidconversion()StackS;intn;InitStack(&S);printf("Inputanumbertoconvert:n");scanf("%d",&n);if(n<0)printf("nThenumbermustbeover0.");return;if(n
15、=0)Push(S,0);while(n!=0)Push(S,n%2);n=n/2;printf("theresultis:");while(!StackEmpty(*S)printf("%d",Pop(S);第四章串单项选择题1串是一种特殊的线性表,其特殊性体现在。A. 可以顺序存储B.数据元素是一个字符C.可以链接存储D.数据元素可以是多个字符2. 设有两个串p和q,求q在p中首次出现的位置的运算称作。A.连接B.模式匹配C.求子串D.求串长3. 串是一个B的序列。A.不少于一个字母B.有限个字符C.不少于一个字符D.空格或字母4. 已知串s=
16、9;ABCDEFGH',则s的所有不同子串的个数为。A.8B.9C.36D.37BBBD填空题1. 两个串相等的充分必要条件。2空格串是,其长度等于3. 在串S='tuition'中,以t为首字符且值不相同的子串有个。4. 使用“求子串”ubstring(S,pos,len)和“联接”concat(S1,S2)的串操作,可从串s='conduction'中的字符得到串t='cont',则求t的串表达式为。1. 两个串的长度相等且对应位置的字符相同2. 由一个或多个空格字符组成的串其包含的空格个数3. 10_4. concat(subStr
17、ing(s,1,3),substring(s,7,1)第五章数组与广义表单项选择题1. 常对数组进行的两种操作。A.建立与删除B.索引和修改C.查找和修改D.查找与索引2假设8行10列的二维数组a1.8,1.10分别以行序为主序和以列序为主序顺序存储时,其首地址相同,那么以行序为主序时元素a3的地址与以列序为主序时元素_的地址相同。A.a53B.a83C.a14D.答案A、B、C均不对3. 将一个A1.1OO,1.1OO的三对角矩阵以行序为主序存入一维数组B1.298中,元素A66,65在B数组中的位置k等于。A.198B.197C.196D.1954. 稀疏矩阵一般的压缩存储方法有两种,即。
18、A.二维数组和三维数组B.三元组和散列C.三元组和十字链表D.散列和十字链表5. 一个非空广义表的表头_。A.不可能是子表B.只能是子表C.只能是原子D.可以是原子或子表6. 设head(L)、tail(L)分别为取广义表表头、表尾操作,则从广义表L=(x,y,z),a,(u,v,w)中取出原子u的运算为。A.head(tail(tail(head(L)B.tail(head(head(tail(L)C. head(tail(head(tail(L)D.head(head(tail(tail(L)7广义表(a,(b,(c,d,(e,f),g)的深度为。A.3B.4C.5D.6CDDCDDC填空
19、题1. 将下三角矩阵A1.8,1.8的下三角部分逐行地存储到起始地址为1000的内存单元中,已知每个元素占四个单元,则元素A7,5的地址为。2. 二维数组A0.9,0.19采用行序为主方式存储,每个元素占一个存储单元,并且元素A0,0的存储地址是200,则元素A6,12的地址是。3. 二维数组A10.20,5.10采用行序为主方式存储,每个元素占4个存储单元,并且元素A10,5的存储地址是1000,则元素A18,9的地址是。4. 有一个10阶对称矩阵A,采用压缩存储方式(以行序为主序存储,且元素A0,0地址为1),则元素A8,5的地址是。5设HAEDp为求广义表p的表头函数,TAILp为求广义
20、表p的表尾函数,其中是函数的符号,给出下列广义表的运算结果:HEAD(a,b,c)的结果是。TAIL(a,b,c)的结果是。HEAD(a),(b)的结果是。TAIL(a),(b)的结果是。HEADTAIL(a,b,c)的结果是。TAILHEAD(a,b),(c,d)的结果是。HEADHEAD(a,b),(c,d)的结果是。TAILTAIL(a(c,d)的结果是。a;(b,c);3(a);(b):b;(b);a;)1. 11002. 3323. 12084. 425. 第6章树和二叉树选择题1. 以下说法错误的是。A. 树形结构的特点是一个结点可以有多个直接前趋B. 线性结构中的一个结点至多只有
21、一个直接后继C. 树形结构可以表达(组织)更复杂的数据D. 树(及一切树形结构)是一种"分支层次"结构2. 如图6-2所示的4棵二叉树中,不是完全二叉树。(A)(C)(D)图6-24棵二叉树3. 以下说法错误的是。A. 完全二叉树上结点之间的父子关系可由它们编号之间的关系来表达B. 在三叉链表上,二叉树的求双亲运算很容易实现C. 在二叉链表上,求根,求左、右孩子等很容易实现D. 在二叉链表上,求双亲运算的时间性能很好4. 如图6-3所示的4棵二叉树,是平衡二叉树。A.abcdgef6.某二叉树的前序遍历结点访问顺序是abdgcefh,中序遍历的结点访问顺序是dgbaechf
22、,则其后序遍历的结点访问顺序。A.bdgcefhaB.gdbecfhaC.bdgaechfD.gdbehfca7. 将含有83个结点的完全二叉树从根结点开始编号,根为1号,后面按从上到下、从左到右的顺序对结点编号,那么编号为41的双亲结点编号为。A.42B.40C.21D.208. 一棵二叉树如图6-5所示,其后序遍历的序列为。A.abdgcefhB.dgbaechfC.gdbehfcaD.abcdefghA.16B.32C.31D.1010. 设深度为k的二叉树上只有度为0和度为2的节点,则这类二叉树上所含结点总数至少有个。A.k+1B.2kC.2k-1D.2k+111. 对含有B个结点的非
23、空二叉树,采用任何一种遍历方式,其结点访问序列均相同。A.0B.1C.2D.不存在这样的二叉树1-5ACDBB6-10DDCCC填空题1.有一棵树如图6-7所示,回答下面的问题图6-71棵二叉树(1) 这棵树的根结点是;(2) 这棵树的叶子结点;(3) 结点k3的度是;(4) 这棵树的度为;(5) 这棵树的深度是;(6) 结点k3的孩子是;(7) 结点k3的双亲结点是。2. 深度为k的完全二叉树至少有个结点,至多有个结点,若按自上而下,从左到右次序给结点编号(从1开始),则编号最小的叶子结点的编号。答:2kT2k-12k-2+13. 一棵二叉树的第i(i±1)层最多有个结点;一棵有n
24、(n>0)个结点的满二叉树共有个叶子和个非终端结点。答:2i-12血n2血n-14. 具有n个结点的完全二叉树的深度为。5. 哈夫曼树是带权路径度的树,通常权值较大的结点离根。最短较近6在遍历二叉树的序列中,任何结点的子树上的所有结点,都是直接跟在该结点之后。1答:k1k2k5k7k4234k5,k6k12.3.4. floor(log2n)+15. 6. 先根例题解析【例6-1】由如图6-1所示的二叉树,回答以下问题(1) 其中序遍历序列为;(2) 其前序遍历序列为;(3) 其后序遍历序列为:(4) 该二叉树的中序线索二叉树为:(5) 该二叉树的后序线索二叉树为:(6) 该二叉树对应的
25、森林是。解中序遍历序列为dgbaechif后序遍历序列为gdbeihfca该二叉树的后序线索二叉树如图6-1-1(b)所示前序遍历序列为abdgcefhi该二叉树的中序线索二叉树如图6.1.1(a)所示图6-1-2二叉树对应的森林综合题1二叉树结点数值采用顺序存储结构,如表6-2所示。表6-2二叉树的顺序存储结构1234567891011121314151617181920eafdgcjhib(1)画出二叉树表示;(2)写出前序遍历,中序遍历和后序遍历的结果(3)写出结点值c的父结点,其左、右孩子。解:(1)该二叉树如图6-9所示。图6-91棵二叉树2)本题二叉树的各种遍历结果如下:前序遍历:
26、eadcbjfghi中序遍历:abcdjefhgi后序遍历:bcjdahigfa(3)c的父结点为d,左孩子为j,没有右孩子。2有一份电文中共使用5个字符:a、b、c、d、e,它们的出现频率依次为4、7、5、2、9, 试画出对应的哈夫曼树(请按左子树根结点的权小于等于右子树根结点的权的次序构造)并求出每个字符的哈夫曼编码。解:依题意,本题对应的哈夫曼树如图6-15所示。各字符对应的哈夫曼编码如下:a:001b:10c:01d:000e:113设给定权集w=2,3,4,7,8,9,试构造关于w的一棵哈夫曼树,并求其加权路径长度WPL。解:本题的哈夫曼树如图6-16所示。图6-16一棵哈夫曼树其加
27、权路径长度WPL=7X2+8X2+4X3+2X4+3X4+9X2=804.已知一棵二叉树的中序序列为cbedahgijf,后序序列为cedbhjigfa,画出该二叉树的先序线索二叉树。解:由后序序列的最后一个结点a可推出该二叉树的树根为a,由中序序列可推出a的左子树由cbed组成,右子树由hgijf组成,又由cbed在后序序列中的顺序可推出该子树的根结点为b,其左子树只有一个结点c,右子树由ed组成,显然这里的e是根结点,其右子树为结点d,这样可得到根结点a的左子树的先序序列为:bcde;再依次推出右子树的先序序列为:fghij。因此该二叉树如图6-17所示。图6-17二叉树设二叉树的先序线索
28、链表如图6-18所示。图6-18二叉树的先序线索链表第7章图单项选择题1在一个图中,所有顶点的度数之和等于所有边数的倍。A.1/2B.1C.2D.42在一个有向图中,所有顶点的入度之和等于所有顶点的出度之和的B倍。A.1/2B.1C.2D.43具有4个顶点的无向完全图有条边。A.6B.12C.16D.204. 具有6个顶点的无向图至少应有条边才能确保是一个连通图。A.5B.6C.7D.85. 在一个具有n个顶点的无向图中,要连通全部顶点至少需要条边。A.nB.n+1C.n-1D.n/26. 对于一个具有n个顶点的无向图,若采用邻接矩阵表示,则该矩阵的大小。A.nB.(n-1)2C.n-1D.n
29、27对于一个具有n个顶点和e条边的无向图,若采用邻接表表示,则所有邻接表中的结点总数是。A.e/2B.eC.2eD.n+e8已知一有向图的邻接表存储结构如图7-2所示。(1)根据有向图的深度优先遍历算法,从顶点V1出发,所得到的顶点序列是。A.v1,v2,v3,v5,v4B.v1,v2,v3,v4,v5C.v1,v3,v4,v5,v2D.v1,v4,v3,v5,v2(2)根据有向图的广度优先遍历算法,从顶点v1出发,所得到的顶点序列是A.v1,v2,v3,v4,v5B.v1,v3,v2,v4,v5图7-2一个有向图的邻接表存储结构9.判定一个有向图是否存在回路除了可以利用拓扑排序方法外,还可以
30、利用A.求关键路径的方法B.求最短路径的Dijkstra方法C.广度优先遍历算法D.深度优先遍历算法1-5.CBAAC6-9DCCBD填空题1.n个顶点的连通图至少条边。2在无向图G的邻接矩阵A中,若Aij等于1,则Aji等于。3.已知图G的邻接表如图7-3所示,其从顶点v1出发的深度优先搜索序列为,其从顶点v1出发的广度优先搜索序列为。图7-3G的邻接表4.设x,y是图G中的两顶点,则(x,y)与(y,x)被认为边,但vx,y与vy,x是的两条弧。答:无向,有向5已知一个图的邻接矩阵表示,删除所有从第i个结点出发的边的方法是。6. 在有向图的邻接矩阵上,由第i行可得到第个结点的出度,而由第j
31、列可得到第个结点的入度。ij7. 在无向图中,如果从顶点v到顶点v'有路径,则称v和v'是的。如果对于图中的任意两个顶点vi,vjWV,且vi和vj都是连通的,则称G为。连通,连通图1. n-12. 13. 答:vl,v2,v3,v6,v5,v4vl,v2,v5,v4,v3,v64. 5. 将矩阵第i行全部置为05. 6. 例题解析【例7-1】对m个顶点的无向图G,采用邻接矩阵,如何判别下列有关问题:(1)图中有多少条边?(2)任意两个顶点i和j是否有边相连?(3)任意一个顶点的度是多少?解:邻接矩阵非零元素个数的总和除以2。当Ai,jM0时,表示两顶点i,j之间有边相连。计算
32、邻接矩阵上顶点对应行上非零元素的个数综合题1给出如图7-4所示的无向图G的邻接矩阵和邻接表两种存储结构。图7-4无向图G解:图G对应的邻接矩阵和邻接表两种存储结构分别如图所示。邻接矩阵如下:邻接克如下010100J0A13A001010+1B24A000001C-.5A010010J3D14A000000J4A000010J5F-'4A2用广度优先搜索和深度优先搜索对如图7-5所示的图G进行遍历(从顶点1出发),给出遍历序列。解:搜索本题图的广度优先搜索的序列为:1,2,3,6,4,5,8,7,深度优先搜索的序列为:1,2,6,4,5,7,8,3。283解:使用普里姆算法构造棵最小生成
33、树的过程如图7-11所示。图7-11普里姆算法构造最小生成树的过程4使用克鲁斯卡尔算法构造出如图7-7所示的图G的一棵最小生成树解:使用克鲁斯卡尔算法构造棵最小生成树的过程如图7-12所示。(a)(f)图7-12克鲁斯卡尔算法构造最小生成树的过程第8章查找单项选择题1顺序查找法适合于存储结构为的线性表。A.散列存储C.压缩存储B. 顺序存储或链接存储C. 索引存储2. 对线性表进行折半查找时,要求线性表的存储方式。A. 顺序存储B. 链接存储C. 以关键字有序排序的顺序存储D. 以关键字有序排序的链接存储3对有18个元素的有序表作二分(折半)查找,则查找A3的比较序列的下标为。A.1.2.3B
34、.9.5.2.3C.9.5.3D.9.4.2.34. 如果要求一个线性表既能较快地查找,又能适应动态变化的要求,可以采用查找方法。A.分块B.顺序C.二分D.散列5. 有一个有序表为2,5,7,11,22,45,49,62,71,77,90,93,120,当折半查找值为90的结点时,经过次比较后查找成功。A.1B.2C.4D.86. 设哈希表长m=14,哈希函数H(key)二key%11。表中已有4个结点:addr(14)=3,addr(38)=5,addr(61)=6,addr(85)=8,其余地址为空,如用线性探测再散列处理冲突,关键字为49的结点的地址是。A.7B.3C.5D.47. 在
35、采用链接法处理冲突的开散列表上,假定装填因子a的值为4,则查找任一元素的平均查找长度为。A.3B.3.5C.4D.2.51-4BCDA5-7CAA填空题1在各种查找方法中,平均查找长度与结点个数n无关的查法方法是。2. 二分查找的存储结构仅限于。3. 在散列存储中,装填因子a的值越大,贝9;a的值越小,则。存取元素时发生冲突的可能性就越大存取元素时发生冲突的可能性就越小4. 对于二叉排序树的查找,若根结点元素的键值大于被查元素的键值,贝应该在二叉树的上继续查找。5. 高度为8的平衡二叉树至少有个结点。6. 在散列函数H(key)=key%p中,p应取。1. 散列表查找2. 有序的顺序存储结构3
36、. 4. 左子树5. 546.素数例题解析【例8-1】设有一组关键字19,01,23,14,55,20,84,27,68,11,10,77,采用哈希函数:H(key)=key%13,采用开放地址法的二次探测再散列方法解决冲突,试在018的散列地址空间中对该关键字序列构造哈希表。解:依题意,m=19,二次探测再散列的下一地址计算公式为:d1=H(key)d=(d+j*j)%m2j1d2j1=(d1-j*j)%m;j=1,2,.其计算函数如下:H(19)=19%13=6H(01)=01%13=1H(23)=23%13=10H(14)=14%13=1(冲突)H(14)=(1+1*1)%19=2H(5
37、5)=55%13=3H(20)=20%13=7H(84)=84%13=6(冲突)H(84)=(6+1*1)%19=7(仍冲突)H(84)=(6-1*1)%19=5H(27)=27%13=1(冲突)H(27)=(1+1*1)%19=2(冲突)H(27)=(1-1)%19=0H(68)=68%13=3(冲突)H(68)=(3+1*1)%19=4H(11)=11%13=11H(10)=10%13=10(冲突)H(10)=(10+1*1)%19=11(仍冲突)H(10)=(10-1*1)%19=9H(77)=77%13=12因此:各关键字的记录对应的地址分配如下addr(27)=0addr(01)=1
38、addr(14)=2addr(55)=3addr(68)=4addr(84)=5addr(19)=6addr(20)=7addr(10)=9addr(23)=10addr(11)=11addr(77)=12其他地址为空。综合题1设散列表为T0.12,散列函数为H(key)=key%13,给定键值序列是39,36,28,38,44,15,42,12,06,25,请画出分别用拉链法和线性探查法处理冲突时所构造的散列表,并求出在等概率情况下,这两种方法查找成功和查找失败时的平均查找长度。解用散列函数H(key)=key%13计算出键值序列的散列地址。并用探查次数表示待查键值需对散列表中键值比较次数。
39、键值序列:39,36,28,38,44,15,42,12,06,25散列地址:0,10,2,12,5,2,3,12,6,12(1)线性探查法处理冲突用线性探查法处理冲突构造的散列表见表8-1所示。表8-1用线性探查法处理冲突构造的散列表下标0123456789101112T0.1239122815424406253638查找成功探查次数1312211911查找失败探查次数98765432112110在等概率的情况下,查找成功的平均查找长度ASL=(1X6+2X2+3X1+9X1)/10=2.2设待查键值k不在散列表中:若H(k)=k%13=d,则从i=d开始顺次与Ti位置的键值进行比较,直到遇
40、到空位,才确定其查找失败,同时累计k键值的比较次数,例如若k%13=0,则必须将k与T0、T1、T8中的键值进行比较之后,发现T8为空,比较次数为9、类似地可对k%13=1,2,3,-,12进行分析可得查找失败的平均查找长度。ASL=(9+8+7+6+5+4+3+2+1+1+10)/13=59/13=4.54(2)拉链法处理冲突用拉链法处理冲突构造的散列表见图8-2所示。图8-2拉链法处理冲突构造的散列表在等概率的情况下查找成功的平均查找长度:ASL=(1X7+2X2+3X1)/10=1.4设待查键值k不在散列表中,若k%13=c。则需在d链表中查找键值为k的结点,直到表尾,若不存在则查找失败
41、,设d链表中有i个结点,则k需与表中键值比较i次,查找失败的平均长度为:ASL=(1+0+2+1+0+1+1+0+0+0+1+0+3)/13=10/13=0.772. 线性表的关键字集合87,25,310,08,27,132,68,95,187,123,70,63,7,共有13个元素,已知散列函数为:H(k)=k%13,采用拉链法处理冲突。设计出这种链表结构,并计算该表的成功查找的平均查找长度。解:依题意,得到:H(87)=87%13=9H(25)=25%13=12H(310)=310%13=11H(08)=08%13=8H(27)=27%13=1H(132)=132%13=2H(68)=68
42、%13=3H(95)=95%13=4H(187)=187%13=5H(123)=123%13=6H(70)=70%13=5H(63)=63%13=11H(47)=47%13=8采用拉链法处理冲突的链接表如图8-3所示。成功查找的平均查找长度313012345678910图8.3处理冲突的链接表11第9章排序单项选择题1. 在所有排序方法中,关键字比较的次数与记录的初始排列次序无关的。A.希尔排序B.起泡排序C.插入排序D.选择排序2. 设有10000个无序的元素,希望用最快的速度挑选出其中前10个最大的元素,排序方法最好选用。A.起泡排序B.快速排序C.堆排序D.基数排序3. 在待排序的元素序
43、列基本有序的前提下,效率最高的排序方法。A.插入排序B.选择排序C.快速排序D.归并排序4. 一组记录的排序码为(46,79,56,38,40,84),则利用堆排序的方法建立的初始堆为。A.79,46,56,38,40,80B.84,79,56,38,40,46C.84,79,56,46,40,38D.84,56,79,40,46,385在下列算法中,算法可能出现下列情况:在最后一趟开始之前,所有的元素都不在其最终的位置上。A.堆排序B.冒泡排序C.插入排序D.快速排序6. 一组记录的关键码为(46,79,56,38,40,84),则利用快速排序的方法,以第一个记录为基准得到的一次划分结果为。
44、A.38,40,46,56,79,84B.40,38,46,79,56,84C.40,38,46,56,79,84D.40,38,46,84,56,797. 一组记录的排序码为(48,16,79,35,82,23,36,72),按归并排序的方法对该序列进行一趟归并后的结果为。A.1648357923823672B.1635487982233672C.1648357982233672D.16354879233672828. 排序方法中,从未排序序列中依次取出元素与已排序序列(初始时为空)中的元素进行比较,将其放入已排序序列的正确位置上的方法,称为。A.希尔排序B.起泡排序C.插入排序D.选择排序
45、9. 排序方法中,从未排序序列中挑选元素,并将其依次放入已排序序列(初始时为空)的一端的方法,称为。A.希尔排序B.归并排序C.插入排序D.选择排序1-5DCABC316-9CACD填空题1. 在对一组记录(54,38,96,23,15,72,60,45,83)进行直接插入排序时,当把第8个记录45插入到有序表时,为寻找插入位置需比较次。2. 对于关键字序列(12,13,11,18,60,15,7,20,25,100),用筛选法建堆,必须从键值为的关键字开始。3对n个记录的表rl.n进行简单选择排序,所需进行的关键字间的比较次数为4在插入和选择排序中,若初始数据基本正序,贝y选用;若初始数据基
46、本反序则选用。插入排序选择排序5对n个元素的序列进行起泡排序时,最少的比较次数是。6.排序不需要进行记录关键字间的比较。1. 52. 603. n(n-1)/24. 5. n-16. 基数综合题1. 已知序列4938,65,97,76,13,27,请给出采用起泡排序对该序列作升序排列的每一趟的结果。2. 已知序列503,87,512,61,908,170,897,275,653,462,采用快速排序法对该序列作升序排序时的每一趟的结果。3. 已知序列265,301,751,129,937,863,742,694,076,438,采用基数排序法对该序列作升序排序时的每一趟的结果。4已知序列503,17,512,908,170,897,275,653,426,154,509,612,677,765,703,94,请给出采用希尔排序法(d1=8)对该序列作升序排序时的每一趟的结果。5已知序列35,89,61,135,78,29,50,请给出采用插入排序法对该序列作升序排序时的每一趟的结果。6已知序列11,18,4,3,6,15,1,9,188,请给出采用归并排序法对该序列作升序排序时的每一趟的结果。1. 解:根据起泡排序法的基本思想,比较无序区中相邻关键字。按照大小关系调整其位置,本题的解法是,通过比较已知序列中相邻关键字,并根据需要调整其位置、重复此过程
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工厂生产承包合同
- 2024货运合同格式范本新版范文
- 2024新版广告合同范本
- 定制办公桌椅及安装协议
- 投资合作谈判技巧
- 招标代理合作协议样本
- 房建工程施工分包协议
- 户外广告业务合作合同参考
- 广东省室内装潢设计合同样本
- 3.1.1椭圆的标准方程【同步课件】
- 粉条产品购销合同模板
- 2024至2030年中国自动车配件行业投资前景及策略咨询研究报告
- 2024-2030年中国蔗糖行业市场深度调研及发展趋势与投资前景研究报告
- 北师版 七上 数学 第四章 基本平面图形《角-第2课时 角的大小比较》课件
- 外研版小学英语(三起点)六年级上册期末测试题及答案(共3套)
- 北师大版(2024新版)七年级上册生物期中学情调研测试卷(含答案)
- 产品包装规范管理制度
- 2024年海南省中考物理试题卷(含答案)
- 2024统编新版小学三年级语文上册第八单元:大单元整体教学设计
- 第07讲 物态变化(原卷版)-2024全国初中物理竞赛试题编选
- 高危儿规范化健康管理专家共识解读
评论
0/150
提交评论