数据结构试卷和答案

合集下载

数据结构试卷带答案

数据结构试卷带答案

数据结构试卷带答案数据结构试卷(一)一、选择题(20分)1.组成数据的基本单位是( 1.C )。

(A) 数据项(B) 数据类型(C) 数据元素(D) 数据变量2.设数据结构A=(D,R),其中D={1,2,3,4},R={r},r={<1,2>,<2,3>,<3,4>,<4,1>},则数据结构A是( C )。

(A) 线性结构(B) 树型结构(C) 图型结构(D) 集合3.数组的逻辑结构不同于下列(D)的逻辑结构。

(A) 线性表(B) 栈(C) 队列(D) 树4.二叉树中第i(i≥1)层上的结点数最多有(C)个。

(A) 2i (B) 2i(C) 2i-1(D) 2i-15.设指针变量p指向单链表结点A,则删除结点A的后继结点B 需要的操作为(.A )。

(A) p->next=p->next->next (B) p=p->next(C) p=p->next->next (D) p->next=p6.设栈S和队列Q的初始状态为空,元素E1、E2、E3、E4、E5和E6依次通过栈S,一个元素出栈后即进入队列Q,若6个元素出列的顺序为E2、E4、E3、E6、E5和E1,则栈S的容量至少应该是(.C )。

(A) 6 (B) 4 (C) 3 (D) 27.将10阶对称矩阵压缩存储到一维数组A中,则数组A的长度最少为(C )。

(A) 100 (B) 40 (C) 55 (D) 808.设结点A有3个兄弟结点且结点B为结点A的双亲结点,则结点B的度数数为(8.B(A) 3 (B) 4 (C) 5 (D) 19.根据二叉树的定义可知二叉树共有(B)种不同的形态。

(A) 4 (B) 5 (C) 6 (D) 710.设有以下四种排序方法,则(B )的空间复杂度最大。

(A) 冒泡排序(B) 快速排序(C) 堆排序(D) 希尔排序二、填空题(30分)1.设顺序循环队列Q[0:m-1]的队头指针和队尾指针分别为F和R,其中队头指针F指向当前队头元素的前一个位置,队尾指针R指向当前队尾元素所在的位置,则出队列的语句为F =____________;。

数据结构测试试卷及答案

数据结构测试试卷及答案

得分一、单项选择题(10 小题,每小题 2 分,共 20 分)1.设栈 S 和队列 Q 的初始状态为空,元素 e1,e2,e3,e4,e5,e6 依次通过栈 S,一个元素出栈后即进入队列 Q,若 6 个元素出队的顺序是 e2,e4,e3,e6,e5,e1,则栈 S 的容量至少应该是()。

BA.2B.3C.4D.62.由 4 个叶子结点构造一棵哈夫曼树,该树的总结点数是(A.4 B.5 C.6D)。

D.73.对于长度为m(m>1)的指定序列,通过初始为空的一个栈、一个队列后,错误的叙述是)。

(DA.若入栈和入队列的序列相同,则出栈序列和出队序列可能相同B.若入栈和入队列的序列相同,则出栈序列和出队序列可以互为逆序C.入队序列与出队序列关系为1:1,而入栈序列与出栈序列关系是1: n (n≥1)D.入队序列与出队序列关系为1: n (n≥1),而入栈序列与出栈序列关系是1:14.在一个单链表 HL 中,若要删除由指针 q 所指结点的后继结点,则执行(A)。

A.p=q->next; q->next=p->next; C.p=q->next; p->next=q->next;B.p=q->next; q->next=p;D.q->next= q->next->next; q->next=q;5.假设有如下遗产继承规则:丈夫和妻子可以相互继承遗产;子女可以继承父亲或母亲的遗产;子女之间不能相互继承。

则表示该遗产继承关系的数据结构应该是()。

A.树B.图C.线性表D.集合B6.设数组 S[n]作为两个栈 S1 和 S2 的存储空间,对任何一个栈只有当 S[n]全满时才不能进行进栈操作。

为这两个栈分配空间的最佳方案是(A.S1 的栈底位置为 0,S2 的栈底位置为n-1B.S1 的栈底位置为 0,S2 的栈底位置为n/2C.S1 的栈底位置为 0,S2 的栈底位置为nD.S1 的栈底位置为 0,S2 的栈底位置为 1A)。

数据结构试题及答案

数据结构试题及答案
6.设有向图G中有n个顶点e条有向边,所有的顶点入度数之和为d,则e和d的关系为e=d。
8.8.(1,3,4,2),(1,3,2,4)
三、应用题
1.1.(22,40,45,48,80,78),(40,45,48,80,22,78)
2.2.q->llink=p; q->rlink=p->rlink; p->rlink->llink=q; p->rlink=q;
3.3.2,ASL=91*1+2*2+3*4+4*2)=25/9
int m;
while(i<j){
while (i<j && r[j]>x) j=j-1; if (i<j) {r[i]=r[j];i=i+1;}
while (i<j && r[i]<x) i=i+1; if (i<j) {r[j]=r[i];j=j-1;}
}
r[i]=x;
}
2.设有两个集合A和集合B,要求设计生成集合C=A∩B的算法,其中集合A、B和C用链式存储结构表示。
(A) n,e(B) e,n(C) 2n,e(D) n,2e
8.设某强连通图中有n个顶点,则该强连通图中至少有()条边。
(A) n(n-1)(B) n+1(C) n(D) n(n+1)
9.设有5000个待排序的记录关键字,如果需要用最快的方法选出其中最小的10个记录关键字,则用下列()方法可以达到此目的。
4.4.快速排序的最坏时间复杂度为___________,平均时间复杂度为__________。
5.5.设某棵二叉树中度数为0的结点数为N0,度数为1的结点数为N1,则该二叉树中度数为2的结点数为_________;若采用二叉链表作为该二叉树的存储结构,则该二叉树中共有_______个空指针域。

数据结构试题集(8套卷子+答案)

数据结构试题集(8套卷子+答案)

《数据结构》试卷一一、填空题:(共20分)1、当线性表的元素总数基本稳定,且很少进行插入和删除操作,但要求以最快的速度存取线性表中的元素时,应采用存储结构。

2、队列是限制插入只能在表的一端,而删除在表的另一端进行的线性表,其特点是。

3、在一棵二叉树中,度为0的结点个数为n0,度为2的个数为n2,则n0= 。

4、二叉树的前序遍历序列等同于该二叉树所对应森林的遍历序列5、对一棵二叉排序树,若以遍历该树,将得到一个以关键字递增顺序排列的有序序列。

6、三个结点a,b,c组成二叉树,共有种不同的结构。

7、在AVL树中,由于在A结点的右孩子的右子树上插入结点,使A结点的平衡因子由-1变为-2,使其失去平衡,应采用型平衡旋转。

8、图的遍历有两种,它们是。

9、堆排序的时间复杂度为。

10、在含有N个结点的二叉链表中有空链域,通常用这些空链域存储线索,从而得另一种链式存储结构----线索链表。

二、单项选择题(共20分)1、若进栈序列为1,2,3,4,假定进栈和出栈可以穿插进行,则可能的出栈序列是()(A)2,4,1,3(B)3,1,4,2(C)3,4,1,2(D)1,2,3,42、有一棵非空的二叉树,(第0层为根结点),其第i层上最多有多少个结点?()(A)2i(B)21-i(C)21+i(D) i3、设电文中出现的字母为A,B,C,D,E,每个字母在电文中出现的次数分别为9,27,3,5,11,按huffman编码,则字母A编码为()(A)10(B)110(C)1110(D)11114、下面关于数据结构的叙述中,正确的叙述是()(A)顺序存储方式的优点是存储密度大,且插、删除运算效率高(B)链表中每个结点都恰好包含一个指针(C)包含n个结点的二叉排序树的最大检索长度为logn2(D)将一棵树转为二叉树后,根结点无右子树5、程序段:y:=0while n>=(y+1)*(y+1) doy:=y+1enddo的时间复杂度为()(A)O(n) (B)O(n2) (C)O(n2/1) (D)O(1)6、排序方法中,关键码比较的次数与记录的初始排列无关的是( )(A) shell排序 (B) 归并排序 (C) 直接插入排序 (D) 直接选择排序7、数组q[0..n-1]作为一个环行队列,f 为当前队头元素的前一位置,r为队尾元素的位置,假定队列中元素的个数总小于n,则队列中元素个数为( )(A) r-f (B) n+f-r (C) n+r-f (D) (n+r-f) mod n8、为了有效的利用散列查找技术,需要解决的问题是:( )Ⅰ:找一个好的散列函数Ⅱ:设计有效的解决冲突的方法Ⅲ:用整数表示关键码值(A) Ⅰ和Ⅲ (B) Ⅰ和Ⅱ (C) Ⅱ和Ⅲ (D) Ⅰ,Ⅱ和Ⅲ9、引入线索二叉树的目的是()(A) 加快查找结点的前驱或后继的速度(B) 为了能在二叉树中方便的进行插入与删除(C) :为了能方便的找到双亲(D) 使二叉树的遍历结果唯一10、用二分(折半)查找表的元素的速度比用顺序法()(A) 必然快(B) 必然慢(C): 相等(D): 不能确定三、简答题:(共40分)1、已知某二叉树按中序遍历序列为BFDAEGC,按前序遍历序列为ABDFCEG,试画出该二叉树形状,并写出它的后序遍历序列。

数据结构试题及答案

数据结构试题及答案

数据结构试题及答案数据结构试卷(⼗⼀)⼀、选择题(30分)1.设某⽆向图有n个顶点,则该⽆向图的邻接表中有()个表头结点。

(A) 2n (B) n (C) n/2 (D) n(n-1)2.设⽆向图G中有n个顶点,则该⽆向图的最⼩⽣成树上有()条边。

(A) n (B) n-1 (C) 2n (D) 2n-13.设⼀组初始记录关键字序列为(60,80,55,40,42,85),则以第⼀个关键字45为基准⽽得到的⼀趟快速排序结果是()。

(A) 40,42,60,55,80,85 (B) 42,45,55,60,85,80(C) 42,40,55,60,80,85 (D) 42,40,60,85,55,804.()⼆叉排序树可以得到⼀个从⼩到⼤的有序序列。

(A) 先序遍历(B) 中序遍历(C) 后序遍历(D) 层次遍历5.设按照从上到下、从左到右的顺序从1开始对完全⼆叉树进⾏顺序编号,则编号为i结点的左孩⼦结点的编号为()。

(A) 2i+1 (B) 2i (C) i/2 (D) 2i-16.程序段s=i=0;do {i=i+1; s=s+i;}while(i<=n);的时间复杂度为()。

(A) O(n) (B) O(nlog2n) (C) O(n2) (D) O(n3/2)7.设带有头结点的单向循环链表的头指针变量为head,则其判空条件是()。

(A) head==0 (B) head->next==0(C) head->next==head (D) head!=08.设某棵⼆叉树的⾼度为10,则该⼆叉树上叶⼦结点最多有()。

(A) 20 (B) 256 (C) 512 (D) 10249.设⼀组初始记录关键字序列为(13,18,24,35,47,50,62,83,90,115,134),则利⽤⼆分法查找关键字90需要⽐较的关键字个数为()。

(A) 1 (B) 2 (C) 3 (D) 410.设指针变量top指向当前链式栈的栈顶,则删除栈顶元素的操作序列为()。

专升本《数据结构》_试卷_答案

专升本《数据结构》_试卷_答案

专升本《数据结构》一、(共75题,共150分)1. 数据的基本单位是()。

(2分)A.数据元素B.记录C.数据对象D.数据项.标准答案:A2. ()是数据的不可分割的最小单位。

(2分)A.数据对象B.数据元素C.数据类型D.数据项.标准答案:D3. 算法的空间复杂度是对算法()的度量。

(2分)A.时间效率B.空间效率C.可读性D.健壮性.标准答案:B4. ()是限制了数据元素的内部结构仅为一个字符的线性表。

(2分)A.栈B.队列C.串D.数组.标准答案:B5. 串的长度是指串中所含()的个数。

(2分)A.不同字符B.不同字母C.相同字符D.所有字符.标准答案:D6. 采用带头结点双向链表存储的线性表,在删除一个元素时,需要修改指针()次。

(2分).标准答案:B7. 线性表的顺序存储结构是一种()的存储结构。

(2分)A.顺序存取B.随机存取C.索引存取存取.标准答案:B8. 数组a[1..m]采用顺序存储,a[1]和a[m]地址分别为1024和1150,每个元素占2字节,则m是()。

(2分).标准答案:A9. 深度为h的二叉树,第h层最多有()个结点。

(2分).标准答案:C 10. m个结点的二叉树,其对应的二叉链表共有()个非空链域。

(2分)+1.标准答案:B11. 下面叙述错误的是()。

(2分)A.顺序表是借助物理单元相邻表示数据元素之间的逻辑关系B.对于空队列进行出队操作过程中发生下溢现象C.有向图的邻接矩阵一定是对称的D.具有相同的叶子个数和具有相同的叶子权值的赫夫曼树不是唯一的.标准答案:C12. 以下与数据的存储结构无关的术语是()。

(2分)A.循环队列B.双向链表C.哈希表D.数组.标准答案:D13. 在一个长度为n的链式栈中出栈实现算法的时间复杂度为()。

(2分)(1) (log n)(n) (n2).标准答案:A14. 在具有k个度数为2的二叉树中,必有()个叶子结点。

(2分)+1.标准答案:D15. 在关键字序列(10,20,30,40,50)中,采用折半法查找20,关键字之间比较需要()次。

大学计算机《数据结构》试卷及答案(八)

大学计算机《数据结构》试卷及答案(八)

大学计算机《数据结构》试卷及答案一、选择题(30分)1.设一维数组中有n个数组元素,则读取第i个数组元素的平均时间复杂度为()。

(A) O(n) (B) O(nlog2n) (C) O(1) (D) O(n2)2.设一棵二叉树的深度为k,则该二叉树中最多有()个结点。

(A) 2k-1 (B) 2k(C) 2k-1(D) 2k-13.设某无向图中有n个顶点e条边,则该无向图中所有顶点的入度之和为()。

(A) n (B) e (C) 2n (D) 2e4.在二叉排序树中插入一个结点的时间复杂度为()。

(A) O(1) (B) O(n) (C) O(log2n) (D) O(n2)5.设某有向图的邻接表中有n个表头结点和m个表结点,则该图中有()条有向边。

(A) n (B) n-1 (C) m (D) m-16.设一组初始记录关键字序列为(345,253,674,924,627),则用基数排序需要进行()趟的分配和回收才能使得初始关键字序列变成有序序列。

(A) 3 (B) 4 (C) 5 (D) 87.设用链表作为栈的存储结构则退栈操作()。

(A) 必须判别栈是否为满(B) 必须判别栈是否为空(C) 判别栈元素的类型(D) 对栈不作任何判别8.下列四种排序中()的空间复杂度最大。

(A) 快速排序(B) 冒泡排序(C) 希尔排序(D) 堆9.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是()。

(A) N0=N1+1 (B) N0=N l+N2(C) N0=N2+1 (D) N0=2N1+l10.设有序顺序表中有n个数据元素,则利用二分查找法查找数据元素X的最多比较次数不超过()。

(A) log2n+1 (B) log2n-1 (C) log2n (D) log2(n+1)二、填空题(42分)1.设有n个无序的记录关键字,则直接插入排序的时间复杂度为________,快速排序的平均时间复杂度为_________。

数据结构试卷及其规范标准答案

数据结构试卷及其规范标准答案

《数据结构》试卷及答案1.算法分析的目的是( C )。

A.找出数据结构的合理性B.研究算法中输入和输出的关系C.分析算法的效率以求改进D.分析算法的易懂性和文档性2.( B )是具有相同特性数据元素的集合,是数据的子集。

A.数据符号B.数据对象C.数据D.数据结构3.用链表表示线性表的优点是( C )。

A.便于随机存取B.花费的存储空间比顺序表少C.便于插入与删除D.数据元素的物理顺序与逻辑顺序相同4.输入序列为(A,B,C,D)不可能的输出有(D )。

A.(A,B,C,D)B. (D,C,B,A)C. (A,C,D,B) D . (C,A,B,D)5.在数组表示的循环队列中,front、rear分别为队列的头、尾指针,maxSize为数组的最大长度,队满的条件是( B )。

A. front=maxSizeB. (rear+1)%maxSize=frontC. rear=maxSizeD. rear=front6.设有串t='I am a good student ',那么Substr(t,6,6)=( D )。

A. studentB. a good sC. goodD. a good 7.设有一个对称矩阵A,采用压缩存储方式,以行序为主序存储a11为第一个元素,其存储地址为1,每个元素占一个地址空间,则a85地址为( B )。

A.23B.33C.18D. 408.已知广义表LS=(A,(B,C,D),E)运用head和tail函数,取出LS中原子B的运算(C )。

A. Gethead(Gethead(LS))B. Gettail(Gethead(LS))C. Gethead(Gethead(Gettail(LS)))D. Gethead(Gettail(LS))9.若已知一棵二叉树先序序列为ABCDEFG,中序序列为CBDAEGF,则其后序序列为( A ) 。

A. CDBGFEAB. CDBFGEAC. CDBAGFED. BCDAGFE10.下列存储形式中,(C ) 不是树的存储形式。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《数据结构》试题参考答案 (开卷)(电信系本科2001级 2002年12月)一、回答下列问题 (每题4分,共36分)1. 某完全二叉树共有15381个结点,请问其树叶有多少个? 答:n2=⎡n/2⎤=⎡15381/2⎤=7691(个)2. 假设有二维数组A 7×9,每个元素用相邻的6个字节存储,存储器按字节编址。

已知A 的起始存储位置(基地址)为1000,末尾元素A[6][8]的第一个字节地址为多少?若按列存储时,元素A[4][7]的第一个字节地址为多少?答:① 末尾元素A[6][8]的第一个字节地址=1000+(7行×9列—1)×6B =1000+62×6=1372 ②按列存储时,元素A[4][7]的第一个字节地址=1000+(7列×7行+4)×6B =1000+53×6=13183. 在KMP 算法中,已知模式串为ADABBADADA ,请写出模式串的next[j]函数值。

答:根据0 当j =1时next[ j ]= max { k |1<k<j 且‘T 1…T k-1’=‘T j-(k-1) …T j-1’ }1 其他情况对应模式串的next[ j ]演示程序亦验证了结果:next[j]=01121123434. 已知一棵二叉树的前序序列和中序序列分别为:ABDEGCFH 和DBGEACHF ,则该二叉树的后序序列是什么?答:法1:先画树而得后序序列;A(DBGE) (CHF)B C结论:DGEBHFCAD (GE) (HF)E F G H法2:直接推出后序序列 step1: (DBGE) (CHF)A step2: D(GE)B (HF) C A step3: DGE B HF C A5. 请证明:用二叉链表法(Lchild-Rchild )存储包含n 个结点的二叉树,必有n+1个指针域为空。

答:因为:用二叉链表存储包含n 个结点的二叉树,结点共有2n 个链域;又因为:二叉树中除根结点外,每一个结点有且仅有一个双亲,这就意味着只有n-1个结点的链域存放指向非空子女结点的指针(换句话说,有后继孩子链接的指针仅n-1个);所以,空指针数目=全部指针数2n -所有非空指针数(n-1)=所有空指针数=n +1,证毕。

6.设二叉排序树中关键字互不相同,则其中最小元素必无左孩子,最大元素必无右孩子。

此命题是否正确?最大元素和最小元素一定是叶子吗?一个新的结点总是插在二叉排序树的某叶子上吗? 请解释理由。

答:① 设二叉排序树中关键字互不相同,则其中最小元必无左孩子,最大元必无右孩子。

此命题正确。

解释:假设最小元为min ,若最小元min 有左孩子min ’,根据二叉排序树的定义应该有:min ’< min,与min 是最小元矛盾,由此可反证出最小元必无左孩子;同理可反证出最大元必无右孩子。

② 最大元和最小元不一定是叶子;解释:虽然最小元必无左孩子,最大元必无右孩子,但最小元可有右孩子,最大元可有左孩子。

如下图A 和B 所示。

所以最大元和最小元不一定是叶子。

③ 一个新的结点不一定总是插在二叉排序树的某叶子上。

解释:例如给定关键字{A,B,C},以B 、A 、C 的次序插入一空的二叉排序树中,过程如下图C 所示。

当再插入C 时,C 作为B 的右孩子,插入后如图D 所示,但此时B 已有左孩子A ,元矛盾,由此可反证出最小元必无左孩子;同理可反证出最大元必无右孩子。

7. 假设一有序表中有23个元素,现进行折半查找,则平均查找长度是多少? 答:显然,平均查找长度=O (log 2n )<5次(25)。

但具体是多少次,则不能按照公式1)1(log 12-++=n nn ASL 来计算(即24/23(log 224)-1≈3.785次并不正确!)。

因为这是在假设n =2m-1的情况下推导出来的公式。

应当用穷举法罗列:全部元素的查找次数为=(1+2×2+4×3+8×4+8×5)=89; ASL =89/23=3.878. 已知输入序列的入栈次序为X 、Y 、Z ,请列出出栈的所有可能序列。

答: 共5种可能的序列。

(1) X 、Y 、Z 全入 Z 、Y 、X 出栈 (2) X 、Y 先入栈 Y 、X 、 Z 出栈 Y 、Z 、X 出栈(3) X 先入栈 X 、Y 、Z 出栈 X 、Z 、Y 出栈9. 若初始记录基本有序,则选用哪些排序方法比较适合?若初始记录基本无序,则最好选用哪些排序方法?请解释理由(排序方法各列举两种即可)。

答:基本有序时可选用直接插入、简单选择、堆排序、锦标赛排序、冒泡排序、归并排序、(希尔排序)等方法,其中插入排序和冒泡应该是最快的。

因为只有比较动作,无需移动元素。

此时平均时间复杂度为O(n);无序的情况下最好选用快速排序、希尔排序、简单选择排序等,这些算法的共同特点是,通过“振荡”让数值相差不大但位置差异很大的元素尽快到位。

二、综合题(每题7分,共28分)1.设某一通信系统由0~9十种字符组成,其出现的概率为:ω={0.20, 0.11,0.06, 0.03, 0.12, 0.06, 0.19,0.01, 0.13, 0.09}, 现用Huffman 方法进行编码,请画出对应的Huffman 树,并计算平均码长WPL 。

答:① 可以先扩大100倍,以方便构造哈夫曼树。

也可以直接构造。

ω={0.20,0.11,0.06,0.03,0.12, 0.06,0.19,0.01,0.13, 0.09}② 平均码长是WPL (而不是ASL )WPL =5(0.03+0.01)++4(0.06+0.06+0.09)++3(0.11+0.12+0.13+0.19)++2(0.20)=0.2+0.84+1.65+0.4 =3.092. 欲将无序序列(23, 78, 12, 35, 69, 95, 11, 09, 35*, 48, 99, 26)中的关键码按升序重新排列,请写出快速排序第一趟排序的结果序列。

另外请画出堆排序(小根堆)的初始堆。

(注意要按振荡式逼近算法实现)② 堆排序的初始堆如下,注意要从排无序堆开始,从最后一个非终端结点开始,自下而上调整,而且要排成小根堆!无序堆 有序初始堆3. 已知一组关键字为(10, 24, 32, 17, 31, 30, 46, 47, 40, 63, 49),设哈希函数H (key )=key MOD 7。

请给出以下解答: (1) 画出用链地址法处理冲突构造所得的哈希表;(2) 若查找关键字17,需要依次与哪些关键字进行比较? (3) 若查找关键字60,需要依次与哪些关键字比较?(4) 假定每个关键字的查找概率相等,求查找成功时的平均查找长度。

解:(1)(2) 若查找关键字(3) 若查找关键字60,需要依次与哪些关键字比较? 先查4单元,与32、46比较,再查指针为空则返回。

(4)假定每个关键字的查找概率相等,求查找成功时的平均查找长度。

11个元素中,有5个需比较1次,有4个需比较2次,有1个需比较3次,有1个需要比较4次,所以: ASL =(5×1+4×2+1×3+1×4)/11=20/114. 某无向图G 的邻接表如下图所示。

要求:①请画出该图G 的逻辑结构图;② 根据邻接表写出其深度优先遍历序列和广度优先遍历序列(设访问起点为v 3); ③ 根据遍历结果,画出图G 的深度优先和广度优先生成树。

0 1 2 3 4 56②根据邻接表写出其深度优先遍历序列和广度优先遍历序列(设访问起点为v3);深度优先遍历序列=3-2-7-1-0-4-6-5 广度优先遍历序列=3-2-0-7-1-4-6-5 ③根据遍历结果,画出图G36分)1. 试用C或类C语言编写一个算法,将一循环单链表就地逆置。

(9分)解:要想让an指向an-1,……a2指向a1,至少有两种算法:法1 :用插入法,扫描a1……an, 将每个ai插入到链表首部即可(实际上是链栈的概念);法2:用替换法:扫描a1……an, 将每个ai—1的指针域送入ai+1的指针域。

2. 定义二叉树的宽度为二叉树一层中结点个数的最大值,试编写一算法求二叉树的宽度。

(9分)解:要用层次遍历以及队列来处理,并一定要设立一个宽度计数器和一个temp,在统计完每一层的结点个数之后就要与计数器中前一层的值比较,保留大值。

可参见严题集【6.52】④。

参考程序如下:typedef struct{BTNode node;int layer;int layer;} BTNRecord; //包含结点所在层次的记录类型int FanMao(Bitree T) //求一棵二叉树的"繁茂度"{int count d; //count数组存放每一层的结点数InitQueue(Q); //Q的元素为BTNRecord类型EnQueue(Q,{T, 0});while(!QueueEmpty(Q)){DeQueue(Q,r);count[yer]++;if(r.node->lchild) EnQueue(Q,{r.node->lchild, yer+1});if(r.node->rchild) EnQueue(Q,{r.node->rchild, yer+1});} //利用层序遍历来统计各层的结点数h=yer; //最后一个队列元素所在层就是树的高度for(maxn=count[0], i=1;h count[i]; i++)if(count[i]>maxn) maxn=count[i]; //求层最大结点数return (h*maxn);} //FanMao分析: 如果不允许使用辅助数组,就必须在遍历的同时求出层最大结点数,形式上会复杂一些。

3. 试用C或类C语言编写一个算法:(A、B两题任选其一, 9分)A.统计二叉树的总结点数和叶子结点数。

B. 对于一个有10000个记录的线性表,希望用尽可能快的速度挑选出前10个最小的记录。

解:A容易,将遍历函数中Visit()细化即可,设立两个计数器,一个每次都++,一个是遇见叶子才++。

或者,可参考【严题集6.42③】编写递归算法(计算二叉树中叶子结点的数目)。

至于总结点数就更容易添加了。

思路:用任何一种遍历递归算法,凡是左右指针均空者,则为叶子,将其用sum2计数。

至于总结点数,无论是否叶子都累计到sum中即可。

法一:核心部分为:初始化:sum=sum2=0;DLR(liuyu *root) //中序遍历的递归函数{if(root!=NULL){if((root->lchild==NULL)&&(root->rchild==NULL))sum2++; //统计叶子结点数sum++; //统计总结点数DLR(root->lchild);DLR(root->rchild); }return(0);}B稍难,用冒泡排序加标志会在有序的情况下很快;但用锦标赛排序会在一般情况下更有优势,快得多。

相关文档
最新文档