- 1、本文档共6页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
2007《数据结构》期末试卷_A_答案汇编
一、(本题10分)
(1)简述线性表的两种存储结构的主要优缺点及各自适用的场合。
(2)在折半查找和表插入排序中,记录分别应使用哪种存储结构,并用一句话简述理由。
答:(1)顺序存储是按索引(如数组下标)来存取数据元素,优点是可以实现快速的随机存取,缺点是插入与删除操作将引起元素移动,降低效率。对于链式存储,元素存储采取动态分配,利用率高。缺点是须增设指针域,存储数据元素不如顺序存储方便。优点是插入与删除操作简单,只须修改指针域。
(2)在折半查找中,记录使用顺序存储,可以快速实现中点的定位;在表插入排序中,记录使用静态链表,可以降少移动记录的操作。
二、(本题15分)在带头结点的非空线性链表中,试设计一算法,将链表中数据域值最小的那个结点移到链表的最前面,其余各结点的顺序保持不变。要求:不得额外申请新的链结点。
解:程序如下:
typedef struct node {
int data;
struct node * next;
}Node,*LinkList;
void MinFirst(LinkList L)
{Node *p,*q,*ptrmin;
if(L-next == NULL) return; //空表
ptrmin = L; //ptrmin指向当前最小结点的前一个结点
p = L-next;//p指向当前结点的前一个结点
while(p-next!=NULL) {
if( p-next-data ptrmin-next-data ) ptrmin = p;
p = p-next;
}
//q指向最小结点,并从链表中删除
q = ptrmin-next; ptrmin-next = q-next;
q-next = L-next; L-next = q; //q指向的最小结点插入到链表头
}
三、(本题15分)编写函数判断一棵二叉树是否不含有度为1的结点,若任何结点的度都不为1,则返回TRUE,否则返回FALSE。二叉树采用标准的二叉链表实现。注意:函数的代码要有注释。
解:结点与二叉树的数据结构如下:
typedef struct BiTNode {
TElemType data;
struct BiTNode * lchild, * rchild; //左右孩子指针
} BiTNode, * BiTree;
bool NoSingleBranchTree(BiTree T)
{
if( T==NULL) return true;
if( T-lchild == NULL T-rchild !=NULL) return false;
if( T-lchild != NULL T-rchild ==NULL) return false;
return NoSingleBranchTree(T-lchild)NoSingleBranchTree(T-rchild);
}
四、(本题15分)某带权有向图及其邻接表如下:
(1)写出深度优先搜索结点访问序列;(邻接边的顺序按照邻接表链表顺序)
(2)画出深度优先生成树;
(3)将该图作为AOE网络,写出顶点C的最早发生时间及活动FC的最晚开始时间。
解:
(1)深度优先搜索顺序是:A, B, C, E, G, D, F
(2)深度优先生成树如下图所示。
(3)求解过程如下:
ee(A)=0 ee(D)=3 ee(F)=ee(D)+3=6 ee(B)=1;
ee(C)=max{ ee(A)+2 ,ee(B)+3, ee(F)+1}=7
ee(E)=max{ ee(B)+1, ee(C)+2 }=9 ee(G)=max{ ee(E)+1, ee(F)+5 }=11
le(G)=11 le(E)=le(G)-1=10 le(C)=le(E)-2=8
le(B)=min{le(E)-1,le(C)-3}=5
le(F)=min{ le(G)-5, le(C)-1 }=6 le(D)=le(F)-3=3
le(A)=min{ le(B)-1, le(C)-2, le(D)-3 } =0
则l(FC)=le(C)-1=7
所以,C的最早发生时间为7,活动FC的最晚开始时间为7。
五、(本题15分)
(1)请画出往如下图的5阶B-树中插入一个关键字408后得到的B-树,以及再删除关键码180后得到的B-树;
(2)包括n个关键字的m阶B-树在一次检索中最多涉及多少个结点?(要求写出推导过程)
解:(1)插入一个关键码408后得到的B-树
再删除关键码180后得到的B-树
(2)
文档评论(0)