算法与数据结构考研试题精析(第二版)第7章 图
考研数据结构-算法与数据结构7.1
B A C D
可求得拓扑有序序列: ABCD 或 ACBD
2013-8-4
26
反之,对于下列有向图
B
A C D
不能求得它的拓扑有序序列。 因为图中存在一个回路 {B, C, D}
2013-8-4
如何进行拓扑排序? 一、从有向图中选取一个没有前驱 的顶点,并输出之;
27
二、从有向图中删去此顶点以及所 有以它为尾的弧; 重复上述两步,直至图空,或者 图不空但找不到无前驱的顶点为止。
清华大学2000年,厦门大学2006
3
(1)n(n-1), n (2) 106 ,不一定是稀疏矩阵(稀疏矩阵 的定义是非零个数远小于该矩阵元素个数, 且分布无规律)
2013-8-4
无向图总结:
有n个顶点的无向连通图最多有()条边,最 少有( )条边 有n个顶点的无向图最多有()条边,最少有 ( )条边 在有n个顶点的无向图中,每个顶点的度最大 可达? 对于一个具有n个顶点的无向图,若采用邻接 矩阵表示,则该矩阵的大小是( )。行列各 代表的信息?(如何用程序实现) 在一个无向图的邻接表中,若表结点的个数 为m,则图中边的条数是()条。
2013-8-4
28
c a g b h f d e
a
b h c d g f
e
在算法中需要用定量的描述替代定性的概念
没有前驱的顶点 入度为零的顶点 删除顶点及以它为尾的弧 弧头顶点的入度减1
2013-8-4
拓扑排序P182 7.12
增加一个存放顶点入度的数组( indegree),初始反 映顶点的实际的入度; 选择一数据结构(栈或队列)保存入度为0的顶点位置 (序号); 引入输出顶点的计数器,初始为0 循环处理: · 从栈(或队列)中取得一个入度为0的顶点; · 输出该顶点,将输出顶点的计数器加1 · 将该顶点的出边关联的各顶点的入度减1,当入 度为0则保存至栈(或队列); · 图中的所有顶点没有全部输出,则说明有环
算法与数据结构考研试题精析(第二版)第1章 绪论答案
第1章绪论二、判断题三.填空题1.数据元素数据元素间关系 2.集合线性结构树形结构图状结构或网状结构。
3.数据的组织形式,即数据元素之间逻辑关系的总体。
而逻辑关系是指数据元素之间的关联方式或称“邻接关系”。
4.表示(又称映像)。
5.(1)逻辑特性(2)在计算机内部如何表示和实现(3)数学特性。
6.算法的时间复杂度和空间复杂度。
7.(1)逻辑结构(2)物理结构(3)操作(运算)(4)算法。
8.(1)有穷性(2)确定性(3)可行性。
9.(1)n+1 (2)n (3)n(n+3)/2 (4)n(n+1)/2。
10.1+(1+2++(1+2+3)+…+(1+2+…+n)=n(n+1)(n+2)/6 O(n3)11. log2n 12. nlog2n 13. log2n2 14. (n+3)(n-2)/2 15. O(n)16.① (1)1 (2)1 (3)f(m,n-1) (4)n ② 9 17. n(n-1)/2四.应用题1.数据结构是一门研究在非数值计算的程序设计问题中,计算机的操作对象及对象间的关系和施加于对象的操作等的学科。
2.四种表示方法(1)顺序存储方式。
数据元素顺序存放,每个存储结点只含一个元素。
存储位置反映数据元素间的逻辑关系。
存储密度大,但有些操作(如插入、删除)效率较差。
(2)链式存储方式。
每个存储结点除包含数据元素信息外还包含一组(至少一个)指针。
指针反映数据元素间的逻辑关系。
这种方式不要求存储空间连续,便于动态操作(如插入、删除等),但存储空间开销大(用于指针),另外不能折半查找等。
(3)索引存储方式。
除数据元素存储在一地址连续的内存空间外,尚需建立一个索引表,索引表中索引指示存储结点的存储位置(下标)或存储区间端点(下标),兼有静态和动态特性。
(4)散列存储方式。
通过散列函数和解决冲突的方法,将关键字散列在连续的有限的地址空间内,并将散列函数的值解释成关键字所在元素的存储地址,这种存储方式称为散列存储。
算法设计与分析(第2版)-王红梅-胡明-习题答案.
习题11.图论诞生于七桥问题。
出生于瑞士的伟大数学家欧拉(Leonhard Euler ,1707—1783)提出并解决了该问题。
七桥问题是这样描述的:一个人是否能在一次步行中穿越哥尼斯堡(现在叫加里宁格勒,在波罗的海南岸)城中全部的七座桥后回到起点,且每座桥只经过一次,图是这条河以及河上的两个岛和七座桥的草图。
请将该问题的数据模型抽象出来,并判断此问题是否有解。
七桥问题属于一笔画问题。
输入:一个起点 输出:相同的点 1, 一次步行2, 经过七座桥,且每次只经历过一次 3, 回到起点该问题无解:能一笔画的图形只有两类:一类是所有的点都是偶点。
另一类是只有二个奇点的图形。
2.在欧几里德提出的欧几里德算法中(即最初的欧几里德算法)用的不是除法而是减法。
请用伪代码描述这个版本的欧几里德算法 =m-n2.循环直到r=0 m=n n=r r=m-n图 七桥问题南区3.设计算法求数组中相差最小的两个元素(称为最接近数)的差。
要求分别给出伪代码和C++描述。
编写程序,求n至少为多大时,n个“1”组成的整数能被2013整除。
#include<iostream>using namespace std;int main(){double value=0;for(int n=1;n<=10000 ;++n){value=value*10+1;if(value%2013==0){cout<<"n至少为:"<<n<<endl;break;}}计算π值的问题能精确求解吗编写程序,求解满足给定精度要求的π值#include <iostream>using namespace std;int main (){double arctan(double x);圣经上说:神6天创造天地万有,第7日安歇。
为什么是6天呢任何一个自然数的因数中都有1和它本身,所有小于它本身的因数称为这个数的真因数,如果一个自然数的真因数之和等于它本身,这个自然数称为完美数。
数据结构+算法+第二版+课后+答案+部分
算法与数据结构课后习题答案第一章一、选择题CCADB二、判断题FFFFT三、简答题5.(1) n-1 (2)1 (3)n(n+1)/2 (4)if(a<b) n , a++ n/2(5)if(x>100) 11*100-1, x-=10;y-- 1006.(1)O(log3n) (2) O(n2) (3) O(n2)第二章一、选择题1~5: AADCD 6~10:BCBAD 11~12:BD二、判断题1~5:FTFTF 6~10:TFTTF 11~12:FF三、算法设计题1.#define arrsize 100int Inserseqx(datatype A[ ], int *elenum, datatype x ) { int i=*elenum-1;if(*elenum==arrsize) return 0;while(i>=0&&A[i]>=x ){ A[i+1]=A[i]; i--; }A[i+1]=x; *elenum ++;return 1;}6.typedef struct node{ dataype data;struct node *next;}LNode, *LinkList;int Inserlinkx(LinkList L,datatype x ){ LNode *p=L,*s;s=(LNode *)malloc(sizeof(LNode));if(!s) return 0;s->data=x;while(p->next&&p->next->data<=x) p=p->next;s->next=p->next; p->next=s;return 1;}第三章一、选择题1~5:CBDBB 6~10: CBDCC二、判断题1~5:TTTFF三、简答题4. 共14种顺序:4321 3214 3241 3421 2134 2143 23142341 2431 1234 1243 1324 1342 1432四、简答题1.#define MAXSIZE 1000typedef struct{datatype data[MAXSIZE];int top;}SeqStack;SeqStack *Init_SeqStack(); /*栈初始化*/int Empty_SeqStack(SeqStack *s);/*判栈空*/int Push_SeqStack(SeqStack *s,datatype x); /*x入栈*/ int Pop_SeqStack(SeqStack *s,datatype *x); /*出栈*/int judgehuiwen(char *str)/*返回1表示是回文,否则不是*/{ SeqStack *s=Init SeqStack( );char *ch=str,ch1;while(*ch!=’@’){Push_SeqStack(s, *ch);ch++;}ch=str;while(!Empty_SeqStack(s)){ Pop_SeqStack(s,&ch1);if(*ch!=ch1) return 0;ch++;}return 1;}5.#define MAXSIZE 1000typedef struct{datatype data[MAXSIZE];int top;}SeqStack;SeqStack *Init_SeqStack(); /*栈初始化*/int Empty_SeqStack(SeqStack *s);/*判栈空*/int Push_SeqStack(SeqStack *s,datatype x); /*x入栈*/ int Pop_SeqStack(SeqStack *s,datatype *x); /*出栈*/ int judge(char *str)/*返回1表示是匹配,否则不是*/{ SeqStack *s=Init SeqStack( );char *ch=str,ch1;while(*c h!=’\0’){ if(*ch==’(‘) Push_SeqStack(s, *ch);else if(*ch==’)‘)if(!Pop_SeqStack(s,&ch1)) return 0;ch++;}if(Empty_SeqStack(s)) return 1;else return 0;}4.typedef struct node{ dataype data;struct node *next;}Lqnode, *LqList;置空:LqList Init_lq(){ LqList rear=(LqList *)malloc(sizeof(LqList)); rear->next=rear;return rear;}入队:int in_lq(LqList *rear, datatype x){ Lqnode *p=(LqList *)malloc(sizeof(LqList)); if(!p) return 0;p->data=x;p->next=*rear->next; *rear->next=p; *rear=p; return 1;}出队:int out_lq(LqList *rear, datatype x){ Lqnode *p;if(*rear->next==*rear) return 0;p=*rear->next->next;if(p==*rear){*rear=*rear->next;*rear->next=*rear;} else *rear->next->next=p->next;free(p);return 1;}第四章一、选择题1-3:CBA 4:DAB 5:CCC 6:C二、判断题FTFFFFF三、简答题2.4. k=i+j-2+(i+1)%2 或k=i+j-1+i%26.第五章一、选择题:1~5:CCBBB 6~10:CBDAD 11~15:DCBDB3 5 6 7 98 13 17二、判断题:1~5:FTFFT 6~10:FFFTF 11~15:TFTFF 16~20:FTFFT 三、简答题:((2)4、条件:森林中既没有孩子也没有右边的兄弟的结点11. 最大值:2h-1 最小值:2h-116.0.31 0.16 0.10 0.08 0.11 0.20 0.04 0.12 0.21 0.28 0.410.59a b c d e f ga:01 b:001 c:110 d:0000 e:111 f:10 g:0001四、算法设计题:typedef struct bitnode{ datatype data;struct bitnode *lchild, *rchild;}BiTNode, *BiTree;1.计算结点数目int counttotal(BiTree bt){ if(bt==NULL) return 0;return counttotal(bt->lchild)+counttotal(bt->rchild)+1;}计算度为1的结点数目:int countdegree1(BiTree bt){ if(bt==NULL) return 0;if( bt->lchild==NULL&& bt->rchild==NULL) return 0;if( bt->lchild==NULL|| bt->rchild==NULL)return countdegree1(bt->lchild)+ countdegree1(bt->rchild)+1; return countdegree1(bt->lchild)+ countdegree1(bt->rchild);}3.求深度;int depth(BiTree bt){ int ld,rd;if(bt==NULL) return 0;ld= depth(bt->lchild); rd=depth(bt->rchild);if( ld>=rd) return ld+1;return rd+1;}第6章作业讲评一、选择题1-4:BABC 5:BD 6-10:DBACB二、判断题1-5:FTTFF 6-10:TTFFT 11-15:FTFFF三、简答题1.(1)ID(1)=2 OD(1)=1ID(2)=2 OD(2)=2ID(3)=1 OD(3)=3ID(4)=3 OD(4)=0ID(5)=2 OD(5)=3ID(6)=1 OD(6)=2(2)0 0 0 1 0 0 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 0 0 1 1 0 1 0 0 0 1 0 0 1 0(3) (4)54 3 2 1 0 54 3 2 1 0(5) 2. (1)0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0(2)(4)(5)v1 v2 v3 v4 v5 v6 v73. 邻接矩阵表示图时,与顶点个数有关,与边的条数无关。
北邮数据结构与算法课后答案 第7章
于 n/2 则在后半区间继续查找。
int fun (Stable *L, int low, int high)
/*以第一个元素为基准分割下标在区间[low, high]内的元素序列*/
{L->elem[0]=L->elem[low] ;
K=L->elem[0].key;
while(low<high)
第7章
1.选择题
(1)A (2)C (3)C (4)D (5)D (6)C (7)B (8)C (9)D (10)C
2.判断题
(1)√ (2)Ⅹ (3)√ (4)Ⅹ (5)Ⅹ (6)√ (7)Ⅹ (8)√ (9)√ (10)√
3.简答题
(1)以关键字序列(tim,kay,eva,roy,dot,jon,kim,ann,tom,jim,guy,amy)为例,手工执行以下排序算法
j++;
}
} 4.已知记录序列 a[1..n]中的关键字各不相同,可按如下所述实现计数排序:另设数组 c[1..n],对每个 记录 a[i],统计序列中关键字比它小的记录个数存于 c[i],则 c[i]=0 的记录必为关键字最小的记录,然后依 c[i]值的大小对 a 中记录进行重新排列,试编写实现上述排序的算法。
{if (max=i) {w=r[min];r[min]=r[n-i+1];r[N-i+1]=w;} else {w=r[max];r[max]=r[n-i+1];r[N-i+1]=w;}
} i++; } } 【解答】这是一个双向选择排序算法,每次选择关键码最小的记录放在前面,同时选择关键码最大的记录 放在后面。比较 n*(n-1)/2 次。最好情况移动记录 0 次,最坏情况大约移动记录 3n 次。 (6)请回答以下关于堆的问题: 1)堆的存储结构是顺序的,还是链式的? 2)设有一个大顶堆,即堆中任意结点的关键码均大于它的左孩子和右孩子的关键码。其具有最大 值的元素可能在什么地方? 3)对 n 个元素进行初始建堆的过程中,最多做多少次数据比较? 【解答】1)堆的存储结构是顺序的。 2)堆顶。 3)不超过 4n。
数据结构考研试题精选及答案第七章 图
第七章 图一、选择题1.图中有关路径的定义是( )。
【北方交通大学 2001 一、24 (2分)】A .由顶点和相邻顶点序偶构成的边所形成的序列B .由不同顶点所形成的序列C .由不同边所形成的序列D .上述定义都不是2.设无向图的顶点个数为n ,则该图最多有( )条边。
A .n-1B .n(n-1)/2C . n(n+1)/2D .0E .n 2【清华大学 1998 一、5 (2分)】【西安电子科技大 1998 一、6 (2分)】【北京航空航天大学 1999 一、7 (2分)】3.一个n 个顶点的连通无向图,其边的个数至少为( )。
【浙江大学 1999 四、4 (4分)】A .n-1B .nC .n+1D .nlogn ;4.要连通具有n 个顶点的有向图,至少需要( )条边。
【北京航空航天大学 2000 一、6(2分)】A .n-lB .nC .n+lD .2n5.n 个结点的完全有向图含有边的数目( )。
【中山大学 1998 二、9 (2分)】A .n*n B.n (n +1) C .n /2 D .n*(n -l )6.一个有n 个结点的图,最少有( )个连通分量,最多有( )个连通分量。
A .0B .1C .n-1D .n【北京邮电大学 2000 二、5 (20/8分)】7.在一个无向图中,所有顶点的度数之和等于所有边数( )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( )倍。
【哈尔滨工业大学 2001 二、3 (2分)】A .1/2B .2C .1D .48.用有向无环图描述表达式(A+B)*((A+B )/A ),至少需要顶点的数目为( )。
【中山大学1999一、14】A .5B .6C .8D .99.用DFS 遍历一个无环有向图,并在DFS 算法退栈返回时打印相应的顶点,则输出的顶点序列是( )。
A .逆拓扑有序B .拓扑有序C .无序的 【中科院软件所1998】10.下面结构中最适于表示稀疏无向图的是( ),适于表示稀疏有向图的是( )。
北邮数据结构与算法课后答案第7章
北邮数据结构与算法课后答案第7章第7章1.选择题(1)A (2)C (3)C (4)D (5)D (6)C (7)B (8)C (9)D (10)C2.判断题(1)√ (2)Ⅹ (3)√ (4)Ⅹ (5)Ⅹ (6)√ (7)Ⅹ (8)√ (9)√ (10)√3.简答题(1)以关键字序列(tim,kay,eva,roy,dot,jon,kim,ann,tom,jim,guy,amy)为例,手工执行以下排序算法(按字典序比较关键字的大小),写出每一趟排序结束时的关键字状态:1)直接插入排序;2)冒泡排序;3)直接选择排序;4)快速排序;5)归并排序;6)基数排序。
【解答】略。
(2)已知序列{50,18,12,61,8,17,87,25},请给出采用堆排序对该序列做升序排序时的每一趟结果。
【解答】堆排序过程如下图示:1887 12178255061618712178185025(3)有n个不同的英文单词,它们的长度相等,均为m,若n>>50,m<5,试问采用什么排序方法时间复杂度最小?为什么?【提示】采用基数排序。
基数排序是一种借助多关键码排序思想对单关键码进行排序的方法,它适合n很大,而关键码较小的序列。
本题中英文单词数目n>>50,而单词长度m<5,因此采用基数排序方法最佳。
(4)如果只想得到一个含有n个元素的序列中第k(k<<n)小元素之前的部分排序序列,最好采用什么排序方法?为什么?如有这样一个序列:{57,11,25,36,18,80,22}得到其第3个最小元素之前的部分序列{11,18,22},使用所选择的算法实现时,要执行多少次比较?< p="">【解答】采用堆排序。
简单选择排序和冒泡排序可以在一趟排序后选出一个最大(或最小)元素,要比较n-1次,选次大元素要再比较n-2次,…其时间复杂度是O(n2)。
当k<<n时,从n个元素中选k 个元素不能使用这种方法。
《数据结构》历年考研真题及解答
《数据结构》考研真题及解答目录2009 年试题 (1)填空题 (1)解答题 (2)2010 年试题 (2)填空题 (2)解答题 (4)2011 年试题 (4)填空题 (4)解答题 (5)2012 年试题 (6)填空题 (6)解答题 (7)2013 年试题 (8)填空题 (8)解答题 (9)2014 年试题 (10)填空题 (10)解答题 (11)2015 年试题 (12)填空题 (12)解答题 (14)2009 年试题填空题1.为解决计算机与打印机之间速度不匹配的问题,通常设置一个打印数据缓冲区,主机将要输出的数据依次写入该缓冲区,而打印机则依次从该缓冲区中取出数据。
该缓冲区的逻辑结构应该是A.栈B.队列C.树D.图2.设栈 S 和队列 Q 的初始状态均为空,元素 abcdefg 依次进入栈 S。
若每个元素出栈后立即进入队列 Q,且7 个元素出队的顺序是 bdcfeag,则栈 S 的容量至少是A.1 B.2 C.3 D.43.给定二叉树图所示。
设 N 代表二叉树的根,L代表根结点的左子树,R代表根结点的右子树。
若遍历后的结点序列为 3,1,7,5,6,2,4,则其遍历方式是A.LRN B.NRL C.RLN D.RNL4.下列二叉排序树中,满足平衡二叉树定义的是5.已知一棵完全二叉树的第 6 层(设根为第 1 层)有8 个叶结点,则完全二叉树的结点个数最多是A.39 B.52 C.111 D.1196.将森林转换为对应的二叉树,若在二叉树中,结点u 是结点v 的父结点的父结点,则在原来的森林中,u 和v 可能具有的关系是I.父子关系II.兄弟关系III.u 的父结点与v 的父结点是兄弟关系A.只有IIB.I 和IIC.I 和IIID.I、II 和III7.下列关于无向连通图特性的叙述中,正确的是I.所有顶点的度之和为偶数II.边数大于顶点个数减1 III.至少有一个顶点的度为1A.只有IB.只有IIC.I 和IID.I 和III8.下列叙述中,不符合 m 阶B 树定义要求的是A.根节点最多有m 棵子树 B.所有叶结点都在同一层上C.各结点内关键字均升序或降序排列 D.叶结点之间通过指针链接9.已知关键序列 5,8,12,19,28,20,15,22 是小根堆(最小堆),插入关键字 3,调整后得到的小根堆是A.3,5,12,8,28,20,15,22,19B.3,5,12,19,20,15,22,8,28C.3,8,12,5,20,15,22,28,19D.3,12,5,8,28,20,15,22,1910.若数据元素序列 11,12,13,7,8,9,23,4,5 是采用下列排序方法之一得到的第二趟排序后的结果,则该排序算法只能是A.起泡排序 B.插入排序 C.选择排序 D.二路归并排序解答题41.(10 分)带权图(权值非负,表示边连接的两顶点间的距离)的最短路径问题是找出从初始顶点到目标顶点之间的一条最短路径。
算法与数据结构考研试题精析(第二版)第10章 排序
第10章排序一、选择题1.某内排序方法的稳定性是指( )。
【南京理工大学 1997 一、10(2分)】A.该排序算法不允许有相同的关键字记录 B.该排序算法允许有相同的关键字记录C.平均时间为0(n log n)的排序方法 D.以上都不对2.下面给出的四种排序法中( )排序法是不稳定性排序法。
【北京航空航天大学 1999 一、10 (2分)】A. 插入B. 冒泡C. 二路归并D. 堆积3.下列排序算法中,其中()是稳定的。
【福州大学 1998 一、3 (2分)】A. 堆排序,冒泡排序B. 快速排序,堆排序C. 直接选择排序,归并排序D. 归并排序,冒泡排序4.稳定的排序方法是()【北方交通大学 2000 二、3(2分)】A.直接插入排序和快速排序 B.折半插入排序和起泡排序C.简单选择排序和四路归并排序 D.树形选择排序和shell排序5.下列排序方法中,哪一个是稳定的排序方法?()【北方交通大学 2001 一、8(2分)】A.直接选择排序 B.二分法插入排序 C.希尔排序 D.快速排序6.若要求尽可能快地对序列进行稳定的排序,则应选(A.快速排序 B.归并排序 C.冒泡排序)。
【北京邮电大学 2001 一、5(2分)】7.如果待排序序列中两个数据元素具有相同的值,在排序前后它们的相互位置发生颠倒,则称该排序算法是不稳定的。
()就是不稳定的排序方法。
【清华大学 1998 一、3 (2分)】A.起泡排序 B.归并排序 C.Shell排序 D.直接插入排序 E.简单选择排序8.若要求排序是稳定的,且关键字为实数,则在下列排序方法中应选()排序为宜。
A.直接插入 B.直接选择 C.堆 D.快速 E.基数【中科院计算所 2000 一、5(2分)】9.若需在O(nlog2n)的时间内完成对数组的排序,且要求排序是稳定的,则可选择的排序方法是()。
A. 快速排序B. 堆排序C. 归并排序D. 直接插入排序【中国科技大学 1998 二、4(2分)】【中科院计算所 1998 二、4(2分)】10.下面的排序算法中,不稳定的是()【北京工业大学 1999 一、2 (2分)】A.起泡排序B.折半插入排序C.简单选择排序D.希尔排序E.基数排序F.堆排序。
数据结构与算法分析 第7章 答案 Larry Nyhoff 清华大学出版社
– 46 –
Chapter 7
//Definition of bottom(): StackElement bottom(Stack s) { if (!s.empty()) [ StackElement value; while (!s.empty()) { value = s.top(); s.pop(); } return value;
– 47 –
Chapter 7
9.
StackElement nthElement(int n); /*---------------------------------------------------------------------Retrieve the n-th element of this stack. Precondition: 1 <= n <= number of stack elements Postcondition: n-th element of the stack is returned, unless stack has fewer than n elements, in which case an error message is displayed. ----------------------------------------------------------------------* //Definition of nthElement() StackElement Stack::nthElement(int n) { if (n <= myTop + 1) return myArray[myTop + 1 - n]; //else cerr << "Stack has no " << n << "-th element" " -- returning a garbage value\n"; StackElement garbage; return garbage; }
算法与数据结构考研试题精析(第二版)第9章 查找答案
第9章集合部分答案解释如下。
4.不能说哪种哈希函数的选取方法最好,各种选取方法有自己的适用范围。
8.哈希表的结点中可以包括指针,指向其元素。
11.单链表不能使用折半查找方法。
20.按插入后中序遍历是递增序列的原则,若某结点只有右子树,而插入元素的关键字小于该结点的关键字,则会插入到该结点的左侧,成为其左孩子。
这种插入就不是插入到叶子下面。
21.从平衡因子定义看,完全二叉树任一结点的平衡因子的绝对值确实是小于等于1。
但是,平衡二叉树本质上是二叉排序树,完全二叉树不一定是排序树。
故不能说完全二叉树是平衡二叉树。
23.某结点的左子树根结点不一定是它的中序前驱,其右子树根结点也不一定是它的中序后继。
24.在等概率下,查找成功时的平均查找长度相同,查找失败时的平均查找长度不相同。
26.只有被删除结点是叶子结点时命题才正确。
三.填空题1.n n+1 2.4 3.6,9,11,12 4.55.26(第4层是叶子结点,每个结点两个关键字) 6.1,3,6,8,11,13,16,19 7.5,96 8.m-1,「m/2⎤-1 9.2,4,310.(1)哈希函数(2)解决冲突的方法 (3)选择好的哈希函数 (4)处理冲突的方法 (5)均匀(6)简单11.AVL树(高度平衡树,高度平衡的二叉排序树),或为空二叉树,或二叉树中任意结点左子树高度与右子树高度差的绝对值小于等于1。
12.小于等于表长的最大素数或不包含小于20的质因子的合数 13.16 14.⎣㏒n」+1215.(1)45 (2)45 (3)46(块内顺序查找) 16.k(k+1)/2 17.30,31.5(块内顺序查找)18.(1)顺序存储或链式存储 (2)顺序存储且有序 (3)块内顺序存储,块间有序 (4) 散列存储19.(n+1)/2 20.(n+1)/n*log2(n+1)-1 21.结点的左子树的高度减去结点的右子树的高度22.(1)顺序表(2)树表(3)哈希表(4)开放定址方法(5)链地址方法(6)再哈希(7)建立公共溢出区23.直接定址法 24.log⎡m/2⎤(21n+)+1 25.O(N) 26.n(n+1)/227.54 28.31 29.37/12 30.主关键字 31.左子树右子树32.插入删除 33.14 34.(1)126 (2)64 (3)33 (4)65 35.(1)low<=high (2) (low+hig) DIV 2 (3) binsrch:=mid (4)binsrch:=0 36.(1) k (2) I<n+1 37.(1)rear=mid-1 (2)head=mid+1 (3)head>rear 38.(1)p!=null (2)pf=p (3)p!=*t (4)*t=null四.应用题1.概念是基本知识的主要部分,要牢固掌握。
算法与数据结构考研试题精析(第二版)第4章串答案概要
第四章串一、选择题1.B 2.E 3.C 4.A5.C6.A7.1D 7.2F 8.B注9.D 10.B注:子串的定义是:串中随意个连续的字符构成的子序列,并规定空串是随意串的子串,随意串是其自己的子串。
若字符串长度为n(n>0),长为n的子串有1个,长为n-1的子串有2个,长为n-2的子串有3个,,,,长为1的子串有n个。
因为空串是任何串的子串,所以此题的答案为:8*(8+1)/2+1=37。
应选B。
但某些教科书上以为“空串是随意串的子串”无心义,所以以为选C。
为防止考试中的二意性,编者以为第9题出得好。
二、判断题1.√2.√3.√三.填空题1.(1)由空格字符(ASCII值32)所构成的字符串(2)空格个数23.随意个连续的字符构成的子序列4.5 5.O(m+n) 6.011223127.010104218.(1)模式般配(2)模式串.字符9.(1)其数据元素都是字符(2)次序储存(3)和链式储存(4)串的长度相等且两串中对应地点的字符也相等10.两串的长度相等且两串中对应地点的字符也相等。
11.’xyxyxywwy’12.*s++=*t++或(*s++=*t++)!=‘\0’13.(1)chars[] (2)j++ (3)i>=j14.[题目剖析]此题算法采纳次序储存构造求串s和串t的最大公共子串。
串s 用i指针(1<=i<=s.len)。
t串用j指针(1<=j<=t.len)。
算法思想是对每个i(1<=i<=s.len,即程序中第一个WHILE循环),来求从i开始的连续字符串与从j(1<=j<=t.len,即程序中第二个WHILE循环)开始的连续字符串的最大般配。
程序中第三个(即最内层)的WHILE循环,是当s中某字符(s[i])与t中某字符(t[j])相等时,求出局部公共子串。
若该子串长度大于已求出的最长公共子串(初始为0),则最长公共子串的长度要改正。
《数据结构与算法》第7章 图
图的定义和术语
• 如果一个有向图恰有一个顶点的入度为0,其余顶点的入度 均为1,则是一棵有向树。一个有向图的生成森林由若干棵 有向树组成,含有图中全部顶点,但只有足以构成若干棵 不相交的有向树的弧。如下图所示。
图的定义和术语
• 图的抽象数据类型包括它的数据结构和一组图的基本操作, 图的抽象数据类型定义见以下ADT。
图的定义和术语
• (8)连通 • 在无向图G中,如果从顶点v到顶点v‘有路径,则称v和v’是 连通的。如果对于图中任意两个顶点vi, vj∈V,vi和vj都是连 通的,则称G是连通图(connected graph)。上图G2就是一 个连通图,而下图(a)中的G3则是非连通图,但G3有两个 连通分量,如下图(b)所示。所谓连通分量(connected component),是指无向图中的极大连通子图。
图的定义和术语
图的定义和术语
图的对象抽象模型
• 由于图结点之间的关系比较复杂,因此它的抽象结构也较 为复杂。这里首先定义一个常量,以方便后面使用:
• 图结点对象抽象模型 • 图结点对象抽象模型的重点是描述图结点的内容,隐蔽其 具体结构,因此对象模型的重点主要是关于结点信息的Get 和Set类操作。以下程序为图结点的类描述,其中成员函数 均已实现。
图的存储结构
图的存储结构
图的存储结构
• 该算法并未涉及图的具体存储结构,因此适用于任意存储 结构。对不同的存储结构,只是在判别是否有边以及找邻 接点的方法上有所不同。以下程序给出邻接矩阵类的部分 成员函数的实现。
图的存储结构
图的存储结构
图的存储结构
图的存储结构
• 邻接表 • 1. 存储方法描述 • 邻接表(adjacency list)是图的顺序存储和链式存储相结合 的一种存储方法,它对图G中的每个顶点vi建立一个单链表, 将所有邻接于vi的顶点放到该链表中。每个结点包含三个域: 邻接点域(adjvex),指示与顶点vi邻接的点的连接关系; 链域(nextarc),指示下一条边或弧的结点;数据域 (info),存储与边或弧相关的信息,如权值等。每个链表 上附设一个头结点,该结点除了设有链域(firstarc)指向链 表中第一个结点之外,还设有存储顶点vi的名称或其他有关 信息的数据域(data)。头结点通常采用顺序结构进行存储, 以便进行随机访问。下图描述了两种结点的结构。
算法与数据结构考研试题精析(第二版)第4章 串
第四章串一、选择题1.下面关于串的的叙述中,哪一个是不正确的?()【北方交通大学2001 一、5(2分)】A.串是字符的有限序列B.空串是由空格构成的串C.模式匹配是串的一种重要运算D.串既可以采用顺序存储,也可以采用链式存储2 若串S1=‘ABCDEFG’, S2=‘9898’,S3=‘###’,S4=‘012345’,执行concat(replace(S1,substr(S1,length(S2),length(S3)),S3),subst r(S4,index(S2,‘8’),length(S2)))其结果为()【北方交通大学1999 一、5 (25/7分)】A.ABC###G0123 B.ABCD###2345 C.ABC###G2345 D.ABC###2345E.ABC###G1234 F.ABCD###1234 G.ABC###012343.设有两个串p和q,其中q是p的子串,求q在p中首次出现的位置的算法称为()A.求子串B.联接C.匹配D.求串长【北京邮电大学2000 二、4(20/8分)】【西安电子科技大学1996 一、1 (2分)】4.已知串S=‘aaab’,其Next数组值为()。
【西安电子科技大学1996 一、7 (2分)】A.0123 B.1123 C.1231 D.12115.串‘ababaaababaa’的next数组为()。
【中山大学1999 一、7】A.012345678999 B.012121111212 C.011234223456 D.01230123223456.字符串‘ababaabab’的nextval 为()A.(0,1,0,1,04,1,0,1) B.(0,1,0,1,0,2,1,0,1)C.(0,1,0,1,0,0,0,1,1) D.(0,1,0,1,0,1,0,1,1 )【北京邮电大学1999 一、1(2分)】7.模式串t=‘abcaabbcabcaabdab’,该模式串的next数组的值为(),nextval数组的值为()。
算法分析与设计与数据结构专升本试题详解
算法分析与设计与数据结构专升本试题详解一、算法分析与设计算法分析与设计是计算机专业中极为重要的一门课程。
该课程旨在培养学生解决实际问题时的算法设计、分析和评估能力。
以下是一些算法分析与设计的试题及其详解。
1. 问题描述:假设有一个长度为n的数组A,数组中的元素表示一些商品的价格。
设计一个算法,找出数组中两个价格之差的最大值。
解析:该问题可以通过暴力搜索法来解决。
我们可以对数组中的所有元素进行两两比较,求出所有差值的最大值。
算法的时间复杂度为O(n^2)。
2. 问题描述:给定一个无序数组A,设计一个算法,将其按照从小到大的顺序进行排序。
解析:该问题可以使用冒泡排序算法来解决。
冒泡排序的基本思想是,从数组的第一个元素开始,依次比较相邻的两个元素,将较大的元素向后移动。
重复该过程,直至数组整体有序。
算法的时间复杂度为O(n^2)。
给定一个整数数组A和一个目标值target,设计一个算法,判断数组中是否存在两个元素的和等于目标值target。
解析:该问题可以使用哈希表来解决。
我们可以遍历数组A,对于每个元素,计算目标值与当前元素的差值,然后查找哈希表中是否存在该差值。
若存在,则返回真;否则,将当前元素加入哈希表继续遍历。
算法的时间复杂度为O(n)。
二、数据结构数据结构是计算机科学中的核心概念之一,它用于组织和存储数据,实现各种操作。
以下是一些数据结构的试题及其详解。
1. 问题描述:设计一个数据结构,使得插入和删除操作的时间复杂度均为O(1),并能高效地获取最小值。
解析:该问题可以使用双向链表和哈希表来解决。
我们可以使用双向链表存储元素,并使用哈希表记录每个元素在链表中的位置。
插入和删除操作可以通过在链表中插入和删除元素来实现,时间复杂度为O(1)。
同时,我们可以使用额外的变量记录链表中的最小值,以实现高效获取最小值。
设计一个数据结构,使得插入、删除和查找操作的时间复杂度均为O(log n),其中n为数据的规模。
中国铁道出版社数据结构(第二版)单元7练习参考答案
中国铁道出版社数据结构(第二版)单元7练习参考答案单元练习7一.判断题(下列各题,正确的请在前面的括号内打√;错误的打w)(√)(1)树结构中每个结点最多只有一个轻易前驱。
(ㄨ)(2)全然二叉树一定就是八十二查树。
(ㄨ)(3)在中序线索二叉树中,右线索若不为空,则一定指向其双亲。
(√)(4)一棵二叉树中序结点序列的最后一个结点,必定就是该二叉树前序结点的最后一个结点。
(√)(5)二叉树的前序结点中,任一一个结点均处在其子女结点的前面。
(√)(6)由二叉树的前序结点序列和中序结点序列,可以推论出来后序结点的序列。
(√)(7)在全然二叉树中,若一个结点没左孩子,则它必然就是叶子结点。
(ㄨ)(8)在哈夫曼编码中,当两个字符出现的频率相同,其编码也相同,对于这种情况应该做特殊处理。
(ㄨ)(9)不含多于两棵树的森林切换的二叉树,其根结点一定无右孩子。
(√)(10)具备n个叶子结点的哈夫曼一棵共计2n-1个结点。
二.填空题(1)在树中,一个结点所具有的子树数称作该结点的度。
(2)度为零的结点称作叶(或叶子,或终端)结点。
(3)树中结点的最小层次称作一棵的深度(或高度)。
(4)对于二叉树来说,第i层上至多存有2i-1个结点。
(5)深度为h的二叉树至多存有2h-1个结点。
(6)由一棵二叉树的前序序列和中序序列可唯一确定这棵二叉树。
(7)有20个结点的完全二叉树,编号为10的结点的父结点的编号是5。
(8)哈夫曼树是带权路径长度最小的二叉树。
(9)由二叉树的后序和中序结点序列,可以唯一确认一棵二叉树。
(10)某二叉树的中序遍历序列为:debac,后序遍历序列为:ebcad。
则前序遍历序列为:dabec。
(11)设一棵二叉树结点的先序遍历序历为:abdecfgh,中序遍历序历为:debafchg,则二叉一棵中叶结点就是:e、f、h。
(12)已知完全二叉树的第8层有8个结点,则其叶结点数是68。
(13)由树转换成二叉树时,其根结点无右子树。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章 图一、选择题1.图中有关路径的定义是( )。
【北方交通大学 2001 一、24 (2分)】A .由顶点和相邻顶点序偶构成的边所形成的序列B .由不同顶点所形成的序列C .由不同边所形成的序列D .上述定义都不是2.设无向图的顶点个数为n ,则该图最多有( )条边。
A .n-1B .n(n-1)/2C . n(n+1)/2D .0E .n 2【清华大学 1998 一、5 (2分)】【西安电子科技大 1998 一、6 (2分)】【北京航空航天大学 1999 一、7 (2分)】3.一个n 个顶点的连通无向图,其边的个数至少为( )。
【浙江大学 1999 四、4 (4分)】A .n-1B .nC .n+1D .nlogn ;4.要连通具有n 个顶点的有向图,至少需要( )条边。
【北京航空航天大学 2000 一、6(2分)】A .n-lB .nC .n+lD .2n5.n 个结点的完全有向图含有边的数目( )。
【中山大学 1998 二、9 (2分)】A .n*n B.n (n +1) C .n /2 D .n*(n -l )6.一个有n 个结点的图,最少有( )个连通分量,最多有( )个连通分量。
A .0B .1C .n-1D .n【北京邮电大学 2000 二、5 (20/8分)】7.在一个无向图中,所有顶点的度数之和等于所有边数( )倍,在一个有向图中,所有顶点的入度之和等于所有顶点出度之和的( )倍。
【哈尔滨工业大学 2001 二、3 (2分)】A .1/2B .2C .1D .48.用有向无环图描述表达式(A+B)*((A+B )/A ),至少需要顶点的数目为( )。
【中山大学1999一、14】A .5B .6C .8D .99.用DFS 遍历一个无环有向图,并在DFS 算法退栈返回时打印相应的顶点,则输出的顶点序列是( )。
A .逆拓扑有序B .拓扑有序C .无序的 【中科院软件所1998】10.下面结构中最适于表示稀疏无向图的是( ),适于表示稀疏有向图的是( )。
A .邻接矩阵B .逆邻接表C .邻接多重表D .十字链表E .邻接表【北京工业大学 2001 一、3 (2分)】11.下列哪一种图的邻接矩阵是对称矩阵?( )【北方交通大学 2001 一、11 (2分)】A .有向图B .无向图C .AOV 网D .AOE 网12. 从邻接阵矩⎥⎥⎥⎦⎤⎢⎢⎢⎣⎡=010101010A 可以看出,该图共有(①)个顶点;如果是有向图该图共有(②) 条弧;如果是无向图,则共有(③)条边。
【中科院软件所 1999 六、2(3分)】①.A .9 B .3 C .6 D .1 E .以上答案均不正确②.A .5 B .4 C .3 D .2 E .以上答案均不正确③.A .5 B .4 C .3 D .2 E .以上答案均不正确13.当一个有N 个顶点的图用邻接矩阵A 表示时,顶点Vi 的度是( )。
【南京理工大学1998一、4(2分)】A .∑=n i j i A 1],[B .[]∑=n 1j j ,i AC .∑=n i i j A 1],[D .∑=n i j i A 1],[+ []∑=n 1j i ,j A14.用相邻矩阵A 表示图,判定任意两个顶点Vi 和Vj 之间是否有长度为m 的路径相连,则只要检查( )的第i 行第j 列的元素是否为零即可。
【武汉大学 2000 二、7】A .mAB .AC .A mD .Am-115. 下列说法不正确的是( )。
【青岛大学 2002 二、9 (2分)】A .图的遍历是从给定的源点出发每一个顶点仅被访问一次 C .图的深度遍历不适用于有向图B .遍历的基本算法有两种:深度遍历和广度遍历 D .图的深度遍历是一个递归过程16.无向图G=(V,E),其中:V={a,b,c,d,e,f},E={(a,b),(a,e),(a,c),(b,e),(c,f),(f,d),(e,d)},对该图进行深度优先遍历,得到的顶点序列正确的是( )。
【南京理工大学 2001 一、14 (1.5分)】A .a,b,e,c,d,fB .a,c,f,e,b,dC .a,e,b,c,f,dD .a,e,d,f,c,b17. 设图如右所示,在下面的5个序列中,符合深度优先遍历的序列有多少?( )【南京理工大学 2000 一、20 (1.5分)】a eb d fc a c fde b a e df c b a e f d c b a e f d bcA .5个B .4个C .3个D .2个第17题图 第18题图18.下图中给出由7个顶点组成的无向图。
从顶点1出发,对它进行深度优先遍历得到的序列是( ① ),而进行广度优先遍历得到的顶点序列是( ② )。
【中科院软件所 1999 六、2-(1)(2分)】①.A .1354267 B .1347652 C .1534276 D .1247653 E .以上答案均不正确②.A .1534267 B .1726453 C .l354276 D .1247653 E .以上答案均不正确19.下面哪一方法可以判断出一个有向图是否有环(回路):【东北大学 2000 4、2(4分)】A .深度优先遍历 B. 拓扑排序 C. 求最短路径 D. 求关键路径20. 在图采用邻接表存储时,求最小生成树的 Prim 算法的时间复杂度为( )。
A. O(n)B. O(n+e)C. O(n 2)D. O(n 3)【合肥工业大学 2001一、2 (2分)】21. 下面是求连通网的最小生成树的prim 算法:集合VT ,ET 分别放顶点和边,初始为( 1 ),下面步骤重复n-1次: a:( 2 );b:( 3 );最后:( 4 )。
【南京理工大学 1997 一、11_14 (8分)】(1).A.VT,ET为空 B.VT为所有顶点,ET为空C.VT为网中任意一点,ET为空 D.VT为空,ET为网中所有边(2).A. 选i属于VT,j不属于VT,且(i,j)上的权最小B.选i属于VT,j不属于VT,且(i,j)上的权最大C.选i不属于VT,j不属于VT,且(i,j)上的权最小D.选i不属于VT,j不属于VT,且(i,j)上的权最大(3).A.顶点i加入VT,(i,j)加入ET B. 顶点j加入VT,(i,j)加入ET C. 顶点j加入VT,(i,j)从ET中删去 D.顶点i,j加入VT,(i,j)加入ET(4).A.ET 中为最小生成树 B.不在ET中的边构成最小生成树 C.ET中有n-1条边时为生成树,否则无解 D.ET中无回路时,为生成树,否则无解22. (1). 求从指定源点到其余各顶点的迪杰斯特拉(Dijkstra)最短路径算法中弧上权不能为负的原因是在实际应用中无意义;(2). 利用Dijkstra求每一对不同顶点之间的最短路径的算法时间是O(n3) ;(图用邻接矩阵表示)(3). Floyd求每对不同顶点对的算法中允许弧上的权为负,但不能有权和为负的回路。
上面不正确的是()。
【南京理工大学 2000 一、21 (1.5分)】A.(1),(2),(3) B.(1) C.(1),(3) D.(2),(3)23.当各边上的权值( )时,BFS算法可用来解决单源最短路径问题。
【中科院计算所2000一、3 (2分)】A.均相等 B.均互不相等 C.不一定相等24. 求解最短路径的Floyd算法的时间复杂度为( )。
【合肥工业大学 1999 一、2 (2分)】A.O(n) B. O(n+c) C. O(n*n) D. O(n*n*n)25.已知有向图G=(V,E),其中V={V1,V2,V3,V4,V5,V6,V7},E={<V1,V2>,<V1,V3>,<V1,V4>,<V2,V5>,<V3,V5>,<V3,V6>,<V4,V6>,<V5,V7>,<V6,V7>},G的拓扑序列是()。
A.V1,V3,V4,V6,V2,V5,V7 B.V1,V3,V2,V6,V4,V5,V7C.V1,V3,V4,V5,V2,V6,V7 D.V1,V2,V5,V3,V4,V6,V7【北京航空航天大学 2000 一、7 (2分)】26.若一个有向图的邻接距阵中,主对角线以下的元素均为零,则该图的拓扑有序序列()。
A.存在 B.不存在【中科院计算所1998 二、6 (2分)】【中国科技大学 1998二、6(2分)】27.一个有向无环图的拓扑排序序列()是唯一的。
【北京邮电大学 2001 一、3 (2分)】A.一定 B.不一定28. 在有向图G的拓扑序列中,若顶点Vi在顶点Vj之前,则下列情形不可能出现的是()。
A.G中有弧<Vi,Vj> B.G中有一条从Vi到Vj的路径C.G中没有弧<Vi,Vj> D.G中有一条从Vj到Vi的路径【南京理工大学 2000 一、9 (1.5分)】29. 在用邻接表表示图时,拓扑排序算法时间复杂度为( )。
A. O(n)B. O(n+e)C. O(n*n)D. O(n*n*n)【合肥工业大学 2000 一、2 (2分)】【南京理工大学 2001 一、9 (1.5分)】【青岛大学 2002 二、3 (2分)】30. 关键路径是事件结点网络中()。
【西安电子科技大学 2001应用一、4 (2分)】A.从源点到汇点的最长路径 B.从源点到汇点的最短路径C.最长回路 D.最短回路31. 下面关于求关键路径的说法不正确的是()。
【南京理工大学 1998 一、12 (2分)】 A.求关键路径是以拓扑排序为基础的B.一个事件的最早开始时间同以该事件为尾的弧的活动最早开始时间相同C.一个事件的最迟开始时间为以该事件为尾的弧的活动最迟开始时间与该活动的持续时间的差D.关键活动一定位于关键路径上32.下列关于AOE网的叙述中,不正确的是()。
A.关键活动不按期完成就会影响整个工程的完成时间B.任何一个关键活动提前完成,那么整个工程将会提前完成C.所有的关键活动提前完成,那么整个工程将会提前完成D.某些关键活动提前完成,那么整个工程将会提前完成【北方交通大学 1999 一、7 (3分)】【北京工业大学 1999 一、1 (2分)】二、判断题1.树中的结点和图中的顶点就是指数据结构中的数据元素。
()【青岛大学 2001 四、1 (1分)】2.在n个结点的无向图中,若边数大于n-1,则该图必是连通图。
()【中科院软件所1997一、4(1分)】3.对有n个顶点的无向图,其边数e与各顶点度数间满足下列等式e=∑=niViTD1)(。