中南大学数据结构与算法第12章文件课后作业答案

合集下载

中南大学数据结构与算法第7章图课后作业答案分解

中南大学数据结构与算法第7章图课后作业答案分解

第7章图(基础知识)习题练习答案7.1 在图7.23所示的各无向图中:(1)找出所有的简单环。

(2)哪些图是连通图?对非连通图给出其连通分量。

(3)哪些图是自由树(或森林)?答:(1)所有的简单环:(同一个环可以任一顶点作为起点)(a)1231(b)无(c)1231、2342、12341(d)无(2)连通图:(a)、(c)、(d)是连通图,(b)不是连通图,因为从1到2没有路径。

具体连通分量为:(3)自由树(森林):自由树是指没有确定根的树,无回路的连通图称为自由树:(a)不是自由树,因为有回路。

(b)是自由森林,其两个连通分量为两棵自由树。

(c)不是自由树。

(d)是自由树。

7.2 在图7.24(下图)所示的有向图中:(1) 该图是强连通的吗? 若不是,则给出其强连通分量。

(2) 请给出所有的简单路径及有向环。

(3) 请给出每个顶点的度,入度和出度。

(4) 请给出其邻接表、邻接矩阵及逆邻接表。

答:(1)该图是强连通的,所谓强连通是指有向图中任意顶点都存在到其他各顶点的路径。

(2)简单路径是指在一条路径上只有起点和终点可以相同的路径:有v1v2、v2v3、v3v1、v1v4、v4v3、v1v2v3、v2v3v1、v3v1v2、v1v4v3、v4v3v1、v3v1v4、另包括所有有向环,有向环如下:v1v2v3v1、v1v4v3v1(这两个有向环可以任一顶点作为起点和终点)(3)每个顶点的度、入度和出度:D(v1)=3ID(v1)=1OD(v1)=2D(v2)=2 ID(v2)=1OD(v2)=1D(v3)=3 ID(v3)=2OD(v3)=1D(v4)=2 ID(v4)=1OD(v4)=1(4)邻接表:(注意边表中邻接点域的值是顶点的序号,这里顶点的序号是顶点的下标值-1)vertex firstedge next┌─┬─┐┌─┬─┐┌─┬─┐0│v1│─→│ 1│─→│ 3│∧│├─┼─┤├─┼─┤└─┴─┘1│v2│─→│ 2│∧│├─┼─┤├─┼─┤2│v3│─→│ 0│∧│├─┼─┤├─┼─┤3│v4│─→│ 2│∧│└─┴─┘└─┴─┘逆邻接表:┌─┬─┐┌─┬─┐0│v1│─→│ 2│∧│├─┼─┤├─┼─┤1│v2│─→│ 0│∧│├─┼─┤├─┼─┤┌─┬─┐2│v3│─→│ 1│─→│ 3│∧│├─┼─┤├─┼─┤└─┴─┘3│v4│─→│ 0│∧│└─┴─┘└─┴─┘邻接矩阵:0 1 0 10 0 1 01 0 0 00 0 1 07.3 假设图的顶点是A,B...,请根据下述的邻接矩阵画出相应的无向图或有向图。

数据结构课后习题及答案

数据结构课后习题及答案

填空题(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。

为了实现图的广度优先搜索,除一个标志数组标志已访问的图的结点外,还需要队列存放被访问的结点实现遍历。

5.7。

广义表的深度是广义表中括号的重数7。

8.有向图G可拓扑排序的判别条件是有无回路。

7.9。

若要求一个稠密图的最小生成树,最好用Prim算法求解。

8。

8.直接定址法法构造的哈希函数肯定不会发生冲突。

9。

2。

排序算法所花费的时间,通常用在数据的比较和交换两大操作。

1。

1。

通常从正确性﹑可读性﹑健壮性﹑时空效率等几个方面评价算法的(包括程序)的质量。

1。

2.对于给定的n元素,可以构造出的逻辑结构有集合关系﹑线性关系树形关系﹑图状关系四种。

1。

3。

存储结构主要有顺序存储﹑链式存储﹑索引存储﹑散列存储四种。

1。

4。

抽象数据类型的定义仅取决于它的一组逻辑特性,而与存储结构无关,即不论其内部结构如何变化,只要它的数学特性不变,都不影响其外部使用。

1。

5.一个算法具有五大特性:有穷性﹑确定性﹑可行性,有零个或多个输入﹑有一个或多个输入。

2.8.在双向链表结构中,若要求在p指针所指的结点之前插入指针为s所指的结点,则需执行下列语句:s—〉prior= p—〉prior; s-〉next= p; p-〉prior- next= s;p-〉prior= s;。

2.9。

在单链表中设置头结点的作用是不管单链表是否为空表,头结点的指针均不空,并使得对单链表的操作(如插入和删除)在各种情况下统一。

数据结构第1-3章作业参考答案

数据结构第1-3章作业参考答案

数据结构第1~3章作业参考答案【1.4】【解法一】⑴抽象数据类型复数:ADT Complex{数据对象:D={ci|ci∈R, i=1,2, 其中R为实数集}数据关系:R={<c1,c2>| ci∈D, i=1,2, 其中c1为复数实部, c2为复数虚部}基本操作:InitComplex (&C,v1,v2)操作结果:构造一个复数C,元素c1, c2分别被赋以参数v1, v2的值。

DestroyComplex(&C)初始条件:复数C已存在。

操作结果:销毁复数C。

GetReal(C, &e)初始条件:复数C已存在。

操作结果:用e返回复数C实部的值。

Get Imaginary(C, &e)初始条件:复数C已存在。

操作结果:用e返回复数C虚部的值。

SetReal(&C, e)初始条件:复数C已存在。

操作结果:用e更新复数C实部的值。

Set Imaginary(&C, e)初始条件:复数C已存在。

操作结果:用e更新复数C虚部的值。

AdditionComplex (&C, C1, C2)初始条件:复数C1,C2已存在。

操作结果:复数C1与复数C2相加,用复数C返回其和。

SubstractComplex(&C, C1, C2)初始条件:复数C1,C2已存在。

操作结果:复数C1减去复数C2,用复数C返回其差。

MultipleComplex(&C, C1, C2 )初始条件:复数C1,C2已存在。

操作结果:复数C1与复数C2相乘,用复数C返回其积。

DividedComplex(&C, C1, C2)初始条件:复数C1,C2已存在,且C2≠0。

操作结果:复数C1除以复数C2,用复数C返回其商。

ModulusComplex(C, &e)初始条件:复数C已存在。

操作结果:求复数C的模,用e返回。

ConjugateComplex(&C, C1)初始条件:复数C1已存在。

数据结构课后习题答案

数据结构课后习题答案

第1章绪论5.选择题:CCBDCA6.试分析下面各程序段的时间复杂度。

(1)O(1)(2)O(m*n)(3)O(n2)(4)O(log3n)(5)因为x++共执行了n-1+n-2+……+1= n(n-1)/2,所以执行时间为O(n2)(6)O(n)第2章线性表1.选择题babadbcabdcddac2.算法设计题(6)设计一个算法,通过一趟遍历在单链表中确定值最大的结点。

ElemType Max (LinkList L ){if(L->next==NULL) return NULL;pmax=L->next; //假定第一个结点中数据具有最大值p=L->next->next;while(p != NULL ){//如果下一个结点存在if(p->data > pmax->data) pmax=p;p=p->next;}return pmax->data;(7)设计一个算法,通过遍历一趟,将链表中所有结点的链接方向逆转,仍利用原表的存储空间。

void inverse(LinkList &L) {// 逆置带头结点的单链表 Lp=L->next; L->next=NULL;while ( p) {q=p->next; // q指向*p的后继p->next=L->next;L->next=p; // *p插入在头结点之后p = q;}}(10)已知长度为n的线性表A采用顺序存储结构,请写一时间复杂度为O(n)、空间复杂度为O(1)的算法,该算法删除线性表中所有值为item的数据元素。

[题目分析] 在顺序存储的线性表上删除元素,通常要涉及到一系列元素的移动(删第i个元素,第i+1至第n个元素要依次前移)。

本题要求删除线性表中所有值为item的数据元素,并未要求元素间的相对位置不变。

因此可以考虑设头尾两个指针(i=1,j=n),从两端向中间移动,凡遇到值item的数据元素时,直接将右端元素左移至值为item的数据元素位置。

《数据结构、算法与应用(C++语言描述)》习题参考答案doc

《数据结构、算法与应用(C++语言描述)》习题参考答案doc
2.如何实现线性表的顺序存储结构? 把线性表的结点按逻辑顺序依次存放在一组地址连续的存储单元里就构成了线性表的
顺序存储,采用顺序存储结构的线性表简称顺序表。线性表的顺序存储结构有如下特点: 线性表中所有元素所占的存储空间是连续的; 线性表的逻辑顺序与物理顺序一致; 数组中的每一个元素的位置可以用公式来确定。假设线性表中的第一个数据元素 的存储地址(指第一个字节的地址,即首地址)为 LOC(e1),每一个数据元素占 k 个字节,则线性表中第 i 个元素 ei 在计算机存储空间中的存储地址为: LOC(ei)=LOC(e1)+(i-1)k
单向链表:在线性链表中,用一个专门的指针指向线性表中第一个结点,每一个结点 的指针都指向它的下一个逻辑结点,线性链表的最后一个结点的指针为空(用 NULL 或 0 表示),表示链表终止,这样的线性链表称为单向链表。下图是单向链表示意图。
first
e1
e2

ei
… 线性表的单向链式存储

en

NULLNULL
5.请列举出一些线性表问题的实例。 ①按员工号排序的员工基本情况表; ②奥运会各项比赛日程; ③按学号记录的学生的成绩单; 等等。
6. 对于顺序表和单向链表,如何实现统计重复元素个数的操作?
在顺序表中实现统计重复元素个数的操作: 在教材的【描述 2-1】中,增加一个统计重复元素个数的成员函数:
int Count(const T&x); //返回 x 出现的次数 在教材的【描述 2-2】中,增加查找重复元素个数的成员函数的实现: //实现统计重复元素个数 template<class T> int LinearList<T>::Count(const T& x) {

中南大学数据结构与算法第5章数组和广义表课后作业答案

中南大学数据结构与算法第5章数组和广义表课后作业答案

第5章数组与广义表习题练习答案5.1请按行及按列优先顺序列出四维数组A2*3*2*3的所有元素在内存中的存储次序,开始结点为a0000。

解:按行优先的顺序排列时,先变化右边的下标,也就是右到左依次变化,这个四维数组的排列是这样的:(将这个排列分行写出以便与阅读,只要按从左到右的顺序存放就是在内存中的排列位置) a0000a0001a0002a0010a0011a0012a0100a0101a0102a0110a0111a0112a0200a0201a0202a0210a0211a0212a1000a1001a1002a1010a1011a1012a1100a1101a1102a1110a1111a1112a1200a1201a1202a1210a1211a1212按列优先的顺序排列恰恰相反,变化最快的是左边的下标,然后向右变化,所以这个四维数组的排列将是这样的,(这里为了便于阅读,也将其书写为分行形式):a0000a1000a0100a1100a0200a1200a0010a1010a0110a1110a0210a1210a0001a1001a0101a1101a0201a1201a0011a1011a0111a1111a0211a1211a0002a1002a0102a1102a0202a1202a0012a1012a0112a1112a0212a02125.2 给出C语言的三维数组地址计算公式。

解:因为C语言的数组下标下界是0,所以Loc(A mnp)=Loc(A000)+((i*n*p)+k)*d其中Amnp表示三维数组。

Loc(A000)表示数组起始位置。

i、j、k表示当前元素的下标,d表示每个元素所占单元数。

5.3设有三对角矩阵A n*n,将其三条对角线上的元素逐行地存储到向量B[0...3n-3]中,使得B[k]=a ij,求:(1)用i , j 表示k的下标变换公式。

(2)用k 表示i,j 的下标变换公式。

数据结构习题及参考答案

数据结构习题及参考答案部门: xxx时间: xxx整理范文,仅供参考,可下载自行编辑数据结构习题及参考答案一、判断下列叙述的对错。

<1)线性表的逻辑顺序与物理顺序总是一致的。

<2)线性表的顺序存储表示优于链式存储表示。

<3)线性表若采用链式存储表示时所有结点之间的存储单元地址可连续可不连续。

<4)二维数组是其数组元素为线性表的线性表。

<5)每种数据结构都应具备三种基本运算:插入、删除和搜索。

二、设单链表中结点的结构为typedef struct node { file://链表结点定义ElemType data; file://数据struct node * Link; file://结点后继指针} ListNode;<1)已知指针p所指结点不是尾结点,若在*p之后插入结点* s,则应执行下列哪一个操作?A. s->link = p; p->link = s;B. s->link = p->link; p->link = s;C. s->link = p->link; p = s;D. p->link = s; s->link = p;<2)非空的循环单链表first的尾结点<由p所指向)满足:A. p->link == NULL;B. p == NULL;C. p->link == first;D. p == first;三、设有一个顺序栈S,元素s1, s2, s3, s4, s5, s6依次进栈,如果6个元素的出栈顺序为s2, s3, s4, s6, s5, s1,则顺序栈的容量至少应为多少?b5E2RGbCAP四、一棵具有n个结点的理想平衡二叉树<即除离根最远的最底层外其他各层都是满的,最底层有若干结点)有多少层?若设根结点在第0层,则树的高度h如何用n来表示<注意n可能为0)?p1 EanqFDPw五、从供选择的答案中选择与下面有关图的叙述中各括号相匹配的词句,将其编号填入相应的括号内。

中南大学数据结构与算法第10章内部排序课后作业答案要点

第10章内部排序习题练习答案1.以关键字序列(265,301,751,129,937,863,742,694,076,438)为例,分别写出执行以下排序算法的各趟排序结束时,关键字序列的状态。

(1) 直接插入排序(2)希尔排序(3)冒泡排序(4)快速排序(5) 直接选择排序(6) 堆排序(7) 归并排序(8)基数排序上述方法中,哪些是稳定的排序?哪些是非稳定的排序?对不稳定的排序试举出一个不稳定的实例。

答:(1)直接插入排序:(方括号表示无序区)初始态: 265[301 751 129 937 863 742 694 076 438]第一趟:265 301[751 129 937 863 742 694 076 438]第二趟:265 301 751[129 937 863 742 694 076 438]第三趟:129 265 301 751[937 863 742 694 076 438]第四趟:129 265 301 751 937[863 742 694 076 438]第五趟:129 265 301 751 863 937[742 694 076 438]第六趟:129 265 301 742 751 863 937[694 076 438]第七趟:129 265 301 694 742 751 863 937[076 438]第八趟:076 129 265 301 694 742 751 863 937[438]第九趟:076 129 265 301 438 694 742 751 863 937(2)希尔排序(增量为5,3,1)初始态: 265 301 751 129 937 863 742 694 076 438第一趟:265 301 694 076 438 863 742 751 129 937第二趟:076 301 129 265 438 694 742 751 863 937第三趟:076 129 265 301 438 694 742 751 863 937(3)冒泡排序(方括号为无序区)初始态[265 301 751 129 937 863 742 694 076 438]第一趟:076 [265 301 751 129 937 863 742 694 438]第二趟:076 129 [265 301 751 438 937 863 742 694]第三趟:076 129 265 [301 438 694 751 937 863 742]第四趟:076 129 265 301 [438 694 742 751 937 863]第五趟:076 129 265 301 438 [694 742 751 863 937]第六趟:076 129 265 301 438 694 742 751 863 937(4)快速排序:(方括号表示无序区,层表示对应的递归树的层数)初始态:[265 301 751 129 937 863 742 694 076 438]第二层:[076 129] 265 [751 937 863 742 694 301 438] 第三层:076 [129] 265 [438 301 694 742] 751 [863 937] 第四层:076 129 265 [301] 438 [694 742] 751 863 [937] 第五层:076 129 265 301 438 694 [742] 751 863 937第六层:076 129 265 301 438 694 742 751 863 937 (5)直接选择排序:(方括号为无序区)初始态[265 301 751 129 937 863 742 694 076 438]第一趟:076 [301 751 129 937 863 742 694 265 438]第二趟:076 129 [751 301 937 863 742 694 265 438]第三趟:076 129 265[ 301 937 863 742 694 751 438]第四趟:076 129 265 301 [937 863 742 694 751 438]第五趟:076 129 265 301 438 [863 742 694 751 937]第六趟:076 129 265 301 438 694 [742 751 863 937]第七趟:076 129 265 301 438 694 742 [751 863 937]第八趟:076 129 265 301 438 694 742 751 [937 863]第九趟:076 129 265 301 438 694 742 751 863 937(6)堆排序:(通过画二叉树可以一步步得出排序结果)初始态[265 301 751 129 937 863 742 694 076 438]建立初始堆:[937 694 863 265 438 751 742 129 075 301]第一次排序重建堆:[863 694 751 765 438 301 742 129 075] 937第二次排序重建堆:[751 694 742 265 438 301 075 129] 863 937第三次排序重建堆:[742 694 301 265 438 129 075] 751 863 937第四次排序重建堆:[694 438 301 265 075 129] 742 751 863 937第五次排序重建堆:[438 265 301 129 075] 694 742 751 863 937第六次排序重建堆:[301 265 075 129] 438 694 742 751 863 937第七次排序重建堆:[265 129 075] 301 438 694 742 751 863 937第八次排序重建堆:[129 075]265 301 438 694 742 751 863 937第九次排序重建堆:075 129 265 301 438 694 742 751 863 937(7)归并排序(为了表示方便,采用自底向上的归并,方括号为有序区)初始态:[265] [301] [751] [129] [937] [863] [742] [694] [076] [438]第一趟:[265 301] [129 751] [863 937] [694 742] [076 438]第二趟:[129 265 301 751] [694 742 863 937] [076 438]第三趟:[129 265 301 694 742 751 863 937] [076 438]第四趟:[076 129 265 301 438 694 742 751 863 937](8)基数排序(方括号内表示一个箱子共有10个箱子,箱号从0到9)初始态:265 301 751 129 937 863 742 694 076 438第一趟:[] [301 751] [742] [863] [694] [265] [076] [937] [438] [129]第二趟:[301] [] [129] [937 438] [742] [751] [863 265] [076] [] [694]第三趟:[075] [129] [265] [301] [438] [] [694] [742 751] [863] [937]在上面的排序方法中,直接插入排序、冒泡排序、归并排序和基数排序是稳定的,其他排序算法均是不稳定的,现举实例如下:以带*号的表示区别。

中南大学数据结构与算法第9章查找课后作业答案

第9章查找习题练习答案1.对含有n个互不相同元素的集合,同时找最大元和最小元至少需进行多少次比较?答:设变量max和min用于存放最大元和最小元(的位置),第一次取两个元素进行比较,大的放入max,小的放入min。

从第2次开始,每次取一个元素先和max比较,如果大于max 则以它替换max,并结束本次比较;若小于max则再与min相比较,在最好的情况下,一路比较下去都不用和min相比较,所以这种情况下,至少要进行n-1次比较就能找到最大元和最小元。

2.若对具有n个元素的有序的顺序表和无序的顺序表分别进行顺序查找,试在下述两种情况下分别讨论两者在等概率时的平均查找长度:(1)查找不成功,即表中无关键字等于给定值K的记录;(2)查找成功,即表中有关键字等于给定值K的记录。

答:查找不成功时,需进行n+1次比较才能确定查找失败。

因此平均查找长度为n+1,这时有序表和无序表是一样的。

查找成功时,平均查找长度为(n+1)/2,有序表和无序表也是一样的。

因为顺序查找与表的初始序列状态无关。

3.画出对长度为18的有序的顺序表进行二分查找的判定树,并指出在等概率时查找成功的平均查找长度,以及查找失败时所需的最多的关键字比较次数。

答:等概率情况下,查找成功的平均查找长度为:ASL=(1+2*2+3*4+4*8+5*3)/18=3.556查找失败时,最多的关键字比较次树不超过判定树的深度,此处为5.4.为什么有序的单链表不能进行折半查找?答:因为链表无法进行随机访问,如果要访问链表的中间结点,就必须先从头结点开始进行依次访问,这就要浪费很多时间,还不如进行顺序查找,而且,用链存储结构将无法判定二分的过程是否结束,因此无法用链表实现二分查找。

5.设有序表为(a,b,c,e,f,g,i,j,k,p,q),请分别画出对给定值b,g和n进行折半查找的过程。

解:(1)查找b的过程如下(其中方括号表示当前查找区间,圆括号表示当前比较的关键字)下标: 1 2 3 4 5 6 7 8 9 10 11 12 13第一次比较:[a b c d e f (g) h i j k p q]第二次比较:[a b (c) d e f] g h i j k p q第三次比较:[a (b)]c d e f g h i j k p q经过三次比较,查找成功。

数据结构课程课后习题答案

数据结构课程课后习题答案||A.一对多b .多对多c .多对一d .一对一答案:D(2)与计算机无关的是数据的()结构A.存储物理学C .逻辑d .物理和存储a. C(3)算法分析的目的是()A.找出数据结构的合理性b .研究算法中输入和输出之间的关系C .分析算法的效率以提高d的可理解性和文档化。

答案:C(4)算法分析的两个主要方面是()A.空间复杂性和时间复杂性b .正确性和简洁性c .可读性和文档d .数据复杂性和程序复杂性a.(5)计算机算法指的是()A.计算方法b .排序方法C .求解问题的有限操作序列d .调度方法a: C(6)计算机算法必须具有五个特征,即输入、输出和()A.可行性、可移植性和可扩展性B .可行性、确定性和有限性c .确定性、有限性和稳定性d .易读性、稳定性和安全性a: B 2。

填空(1)数据结构包括数据①、数据②和数据③三个方面答:①逻辑结构②存储结构③操作(2)数据结构根据逻辑结构可分为两类,分别是①和②答:①线性结构②非线性结构③数据结构形式上定义为(D,R),其中D是①的有限集合,R是D的②有限集合数据结构简明教程答案:①数据元素②关系(4)在一个线性结构中,第一个节点①在该节点之前,其他每个节点都有且只有一个在前的节点;最后一个节点(2)是后续节点,每个其他节点只有一个后续节点。

回答:①否②否(5)在树形结构中,根节点没有①节点,每隔一个节点就有且只有②前驱节点;叶节点没有3个节点,每个其他节点的后续节点数可以是4个A: ①前驱②1 ③后继④任意数量的(6)在图结构中,每个节点的前驱节点和后继节点的数量可以是()答:对于任意数量的(7)个数据,主要有四种存储结构,分别是①、②、③和④存储结构答:①序列②链③索引④散列(8)一个算法的效率可分为①效率和②效率答:①时间②空间3。

简短回答(1)数据结构和数据类型这两个概念有什么区别吗?答:简单地说,数据结构定义了一组根据特定关系绑定在一起的数组元素数据类型不仅定义了一组数据元素,还定义了一组对它们的操作(2)简述线性结构、树形结构和图形结构的区别a:线性结构反映节点之间的逻辑关系是一对一的,树线性结构反映节点之间的逻辑关系是一对多的,而图反映结构中节点之间的逻辑关系是多对多的(3)提供有由二进制组表示的数据逻辑结构S=(D,R),其中d = {a,b,...,i},r = {(a,b),(a,c),(c,d),(c,f),(f,h),(d,e),(f,g),(h,i)},相对于关系r,哪些节点是起始节点,哪些节点是终止节点?A:逻辑结构是树形结构,其中节点A没有被称为根节点的前节点,节点B、E、G和我没有被称为叶节点的末端节点的后继节点。

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

第10章文件习题练习答案
12.1 常见的文件组织方式有哪几种?各有何特点? 文件上的操作有哪几种? 如何评价文件组织的效率?
答:
常用的文件组织方式有:顺序文件、索引文件、散列文件和多关键字文件。
●顺序文件的特点是,它是按记录进入文件的先后顺序存放,其逻辑结构和物理顺序是一致的。
●索引文件的特点是,在主文件之外还另外建立了一张表,由这张表来指明逻辑记录和物理记录之间
的一一对应关系。索引文件在存储器上分为两个区:索引区和数据区,前者存放索引表,后者存放主文件。
●散列文件是利用散列存储方式组织的,它类似于散列表,即根据文件中关键字的特点,设计一个散
列函数和处理冲突的方法,将记录散列到存储设备上,对于散列文件,磁盘上的文件记录通常是成组存放
的。
●多关键字文件则包含有多个次关键索引的,不同于前述几种文件,只含有一个主关键字。
文件的操作有两种:检索和维护 。
评价一个文件组织的效率,是执行文件操作(如查找、删除等)所花费的时间和文件组织所需的存储空
间。

12.2 索引文件、散列文件和多关键字文件适合存放在磁带上吗?为什么?
答:
这几种文件不适合存放在磁带上。因为磁带是一种顺序存储器,在其上存放的数据只能按顺序存取,
而索引文件,散列文件和多关键字文件等均不能只通过顺序存取就能够完成文件的各种操作。因此上述文
件适合于存放在磁盘上。磁带则适合于存放顺序文件。

12.3 设有一个职工文件,其记录格式为(职工号、姓名、性别、职务、年龄、工资)。其中职工号为关键字,
并设该文件有如下五个记录:
地址 职工号 姓名 性别 职务 年龄 工资
A 39 张恒珊 男 程序员 25 3270
B 50 王莉 女 分析员 31 5685
C 10 季迎宾 男 程序员 28 3575
D 75 丁达芬 女 操作员 18 1650
E 27 赵军 男 分析员 33 6280
(1)若该记录为顺序文件,请写出文件的存储结构;
(2)若该文件为索引顺序文件,请写出索引表;
(3)若该文件为倒排序文件,请写出关于性别的倒排表和关于职务的倒排表。

答:
(1)这个结构就是把五个记录依次排列起来。形成线性结构。

(2)索引表如下:
职工号(关键字) 地址
10 C
27 E
39 A
50 B
75 D

(3)倒排序文件:
关于性别的倒排表如下:
次关键字(性别) 地址
男 A C E
女 B D

关于职务的倒排表如下:
次关键字(职务) 地址
程序员 A C
分析员 B E
操作员 D

12.4 在上题所述的文件中,对下列检索写出检索条件的表达式,并写出结果记录的职工号。
(1)男性职工
(2)工资超过平均工资的职工;
(3)职务为程序员和分析员的职工;
(4)年龄超过25岁的男性程序员或分析员;
答:
(1) 性别="男"
结果记录的职工号为10、27、39。
(2) 工资>(A->工资+B->工资+C->工资+D->工资+E->工资)/5
结果为50、27
(3)(职务="程序员")or(职务=="分析员")
结果为10、27、39、50.
(4)(年龄>25)and(性别="男")and((职务="程序员")or(职务="分析员"))
结果为:10、27。

10.5B+树和B-树的主要差异是什么?
答:
一棵m阶的B+树和m阶的B-树的差异是:
①有k个孩子的结点必有k个关键字;
②所有的叶结点,包含了全部关键字的信息及指向相应的记录的指针,且叶子结点本身依照关键字的大
小,自小到大顺序链接;
③上面各层结点中的关键字,均是下一层相应结点中最大关键字的复写(当然也可采用"最小关键字复写"
的原则),因此,所有非叶结点可看作是索引部分。

相关文档
最新文档