最新湖南大学数据结构第5次作业
1、画出对下列存储于数组中的值执行buildheap后得到的最大值堆:
10 5 12 3 2 1 8 7 9 4
先序遍历为12 10 4 1 2 9 5 8 3 7
中序遍历为1 4 2 10 5 9 12 3 8 7
2、假设某字母表各个字母的权如下:
Q Z F M T S O E
2 3 10 10 10 15 20 30
(a)按照这个字母表,一个包含n个字母的字符串采用Huffman编码在最差情况下需要多少位?怎样的串会出现最差情况?
在最差的情况下需要5*n位,当所有的字母都是Q或者Z的时候。
(b)按照这个字母表,包含n个字母的字符串采用Huffman编码在最佳情况下需要多少位?怎样的串会出现最佳情况?
在最佳的情况下需要2*n位,当所有的字母都是E或者O的时候。
(c)按照一个字母表,一个字母平均需要多少位?
(2*30 + 2*20 + 3*15 + 3*10 + 3*10 + 4*10 + 5*3+ 5*2)/100 =2.7
∴ 2.7
3、编写一个算法来判断两棵树是否相同。
尽可能提高算法效率,并分析算法的运行时间代价。
template <class Elem>
bool Compare(GTNode<Elem>* tree1, GTNode<Elem>* tree2) {
GTNode<Elem> *num1, *num2;
if (((tree1 == NULL) && (tree2 != NULL)) ||
((tree2 == NULL) && (tree1 != NULL)))
return 0;
if ((t1 == NULL) && (t2 == NULL)) return 1;
if (tree1->val() != tree2->val()) return 0;
Num1 = tree1->left_child();
Num2 = tree2->left_child();
while(!((num1 == NULL) && (num2 == NULL))) {
if (!Compare(num1, num2)) return false;
if (num1 != NULL) num1 = num1->right_value();
if (num2 != NULL) num2 = num2->right_value();
}}
O(n)
4、编写出一个函数,以一棵树为输入,返回树的结点数目。
要求使用下面给出的GenTree和GTNode ADT。
// General tree node ADT
Template <class Elem> class GTNode {
Public:
GTNode (const Elem&); // Constructor
~GTNode ( ); // Destructor
Elem value ( );
Bool isLeaf ( );
GTNode * parent ( );
GTNode * right_sibling ( );
Void setValue ( Elem &);
Void insert_first(GTNode <Elem>* n); // Insert first child
Void insert_next(GTNode <Elem> * n); // Insert next sibling
Void remove_first ( ); // Remove first child
Void remove_next ( ); // Remove right sibling
};
//General tree ADT
Template <class Elem> class GenTree {
Private:
Void printhelp ( GTNode *) ; // Print helper function
Public :
GenTree ( ); //Constructor
~GenTree ( ); //Destructor
Void clear ( ); // Send nodes to free store
GTNode* root ( ); // Retrun the root
// Combine two subtrees
Void newroot (Elem& , GTNode <Elem>* ,GTNode<Elem>* );
Void print ( ); // print a tree
};
template <class Elem>
int gencount(GTNode<Elem>* subroot) {
if (subroot == NULL) return 0
int count = 1;
GTNode<Elem>* temp = rt->leftmost_child();
while (temp != NULL) {
count += gencount(temp);
temp = temp->right_sibling();
}
return count;
}
5、对下列用(6.3)式编码方法写出的树的顺序表示,画出树的形状。
XPC)Q)RV)M))))
新人教版二年级下册数学知识点复习总结
第一单元数据收集整理
1、用画“正”字的方法收集数据。
2、用统计图表来表示数据的情况。
3、根据统计图表可以做出一些判断。
4、数据收集---整理---分析表格。
第二单元表内除法(一)
一、平均分
1、平均分的含义:把一些物品分成几份,每份分得同样多,叫平均分。
2、平均分的方法:
(1)把一些物品按指定的份数进行平均分时,可以一个一个的分,也可以几个几个的分,直到分完为止。
(2)把一些物品按每几个一份平均分,分时可以想:这个数可以分成几个这样的一份。
二、除法
1、除法算式的含义:只要是平均分的过程,就可以用除法算式表示。
2、除法算式的读法:通常按照从前往后顺序读,“÷”读作除以,“=”读作等于,其他读法不变。
3、除法算式各部分的名称:在除法算式中,除号前面的数叫被除数,除号后面的数叫除数,所得的数叫商。
三、用2~6的乘法口诀求商
1、求商的方法:
(1)用平均分的方法求商。
(2)用乘法算式求商。
(3)用乘法口诀求商。
2、用乘法口诀求商时,想除数和几相乘等于被除数。
四、解决问题
1、解决有关平均分问题的方法:
总数÷每份数=份数被除数=商×除数
总数÷份数=每份数被除数=商×除数+余数
一个因数=积÷另一个因数数除=被除数÷商
2、用乘法和除法两步计算解决实际问题的方法:
(1)所求问题要求求出总数,用乘法计算;
(2)所求问题要求求出份数或每份数,用除法计算。
最新湖南大学数据结构第5次作业
11、画出对下列存储于数组中的值执行buildheap后得到的最大值堆:210 5 12 3 2 1 8 7 9 434先序遍历为12 10 4 1 2 9 5 8 3 75中序遍历为1 4 2 10 5 9 12 3 8 7672、假设某字母表各个字母的权如下:8Q Z F M T S O E92 3 10 10 10 15 20 3010(a)按照这个字母表,一个包含n个字母的字符串采用Huffman编码在最差情11况下需要多少位?怎样的串会出现最差情况?1213在最差的情况下需要5*n位,当所有的字母都是Q或者Z的时候。
(b)按照这个字母表,包含n个字母的字符串采用Huffman编码在最佳情况1415下需要多少位?怎样的串会出现最佳情况?16在最佳的情况下需要2*n位,当所有的字母都是E或者O的时候。
17(c)按照一个字母表,一个字母平均需要多少位?18(2*30 + 2*20 + 3*15 + 3*10 + 3*10 + 4*10 + 5*3+ 5*2)/100 =2.719∴ 2.7203、编写一个算法来判断两棵树是否相同。
尽可能提高算法效率,并分析算法21的运行时间代价。
22template <class Elem>23bool Compare(GTNode<Elem>* tree1, GTNode<Elem>* tree2) {24GTNode<Elem> *num1, *num2;25if (((tree1 == NULL) && (tree2 != NULL)) ||26((tree2 == NULL) && (tree1 != NULL)))27return 0;28if ((t1 == NULL) && (t2 == NULL)) return 1;29if (tree1->val() != tree2->val()) return 0;Num1 = tree1->left_child();3031Num2 = tree2->left_child();32while(!((num1 == NULL) && (num2 == NULL))) {if (!Compare(num1, num2)) return false;3334if (num1 != NULL) num1 = num1->right_value();35if (num2 != NULL) num2 = num2->right_value();36}}3738O(n)394、编写出一个函数,以一棵树为输入,返回树的结点数目。
湖南大学数据结构试卷
8、散列法存储的基本思想是由决定数据的存储地址。
9、对不带权图进行遍历可求得单源最短路径。
10、设一个连通图G中有n个顶点e条边,则其最小生成树上有条边。
第 1 页(共4 页)1、若已知一个栈的入栈序列是1,2,3,…,n,其输出序列为p1,p2,p3,…,pn,若p1=n,则pi为()(A)i (B)n=i (C)n-i+1 (D)不确定2、线性表若采用链式存储结构时,要求内存中可用存储单元的地址: ()(A)必须是连续的(B)部分地址必须是连续的(C)一定是不连续的(D)连续或不连续都可以3. 在n个结点的顺序表中,算法的时间复杂度是O(1)的操作是:()(A)访问第i个结点(1≤i≤n)和求第i个结点的直接前驱(2≤i≤n)(B)在第i个结点后插入一个新结点(1≤i≤n)(C)删除第i个结点(1≤i≤n)(D)将n个结点从小到大排序4、具有n(n>0)个结点的完全二叉树的深度为()。
(A) ⎡log2(n)⎤ (B) ⎣log2(n)⎦ (C) ⎣log2(n)⎦+1 (D) ⎡log2(n)+1⎤5、有n个顶点e条边的无向图G,它的邻接表中的表结点总数是()。
(A) 2n (B)n (C) 2e (D) e6、静态查找表与动态查找表二者的根本差别在于()(A)它们的逻辑结构不一样(B)施加在其上的操作不同(C)所包含的数据元素的类型不一样(D)存储实现不一样7、连通图G中有n个顶点,G的生成树是()连通子图.(A)包含G的所有顶点 (B)包含G的所有边(C)不必包含G的所有顶点 (D)必须包含G的所有顶点和所有的边8、设有5000个无序的元素,希望用最快的速度挑选出其中前50 个最大的元素,最好选用()法。
(A)冒泡排序(B)快速排序(C)堆排序(D)基数排序9、下面的排序算法中,()是不稳定的?(A)希尔排序(B)冒泡排序(C)直接插入排序(D)基数排序10、散列文件使用散列函数将记录的关键字值计算转化为记录的存放地址。
数据结构第五章自测题及解答
一、概念题(每空1分,共53分)1.树(及一切树形结构)是一种“________”结构。
在树上,________结点没有直接前趋。
对树上任一结点X来说,X是它的任一子树的根结点惟一的________。
2.由3个结点所构成的二叉树有种形态。
3.一棵深度为6的满二叉树有个分支结点和个叶子。
4.一棵具有257个结点的完全二叉树,它的深度为。
5.二叉树第i(i>=1)层上至多有______个结点;深度为k(k>=1)的二叉树至多有______个结点。
6.对任何二叉树,若度为2的节点数为n2,则叶子数n0=______。
7.满二叉树上各层的节点数已达到了二叉树可以容纳的______。
满二叉树也是______二叉树,但反之不然。
8.设一棵完全二叉树有700个结点,则共有个叶子结点。
9.设一棵完全二叉树具有1000个结点,则此完全二叉树有个叶子结点,有个度为2的结点,有个结点只有非空左子树,有个结点只有非空右子树。
10.一棵含有n个结点的k叉树,可能达到的最大深度为,最小深度为。
11.二叉树的基本组成部分是:根(N)、左子树(L)和右子树(R)。
因而二叉树的遍历次序有六种。
最常用的是三种:前序法(即按N L R次序),后序法(即按次序)和中序法(也称对称序法,即按L N R次序)。
这三种方法相互之间有关联。
若已知一棵二叉树的前序序列是BEFCGDH,中序序列是FEBGCHD,则它的后序序列必是。
12.中序遍历的递归算法平均空间复杂度为。
13.二叉树通常有______存储结构和______存储结构两类存储结构。
14.如果将一棵有n个结点的完全二叉树按层编号,则对任一编号为i(1<=i<=n)的结点X有:(1)若i=1,则结点X是______;若i〉1,则X的双亲PARENT(X)的编号为______。
(2)若2i>n,则结点X无______且无______;否则,X的左孩子LCHILD(X)的编号为______。
数据结构作业五
1. 分别画出在线性表(a,b,c,d,e,f,g)中进行折半查找,以查关键字等于e、f和g的过程。
(1)查eStep 1: a b c d e f g↑↑↑low mid high d<e low=mid + 1;Step 2: a b c d e f g↑↑↑low mid high f>e high=mid – 1;Step 3: a b c d e f g↑low/highmid e==e return(mid);(2)查fStep 1: a b c d e f g↑↑↑low mid high d<f low=mid + 1;Step 2: a b c d e f g↑↑↑low mid high f==f return(mid);(3)查gStep 1: a b c d e f g↑↑↑low mid high d<g low=mid + 1;Step 2: a b c d e f g↑↑↑low mid high f<g low=mid + 1;Step 3: a b c d e f g↑low/highmid g==g return(mid);2. 请将折半查找的算法改写为递归算法。
int BiSearch( SSTable *ST,int low, int high ){//用递归方法对表ST进行折半查找ST.elem[0]mid = ( low + high ) / 2;if( ST.elem[mid] != ST.elem[0] ){if( ST.elem[mid] > ST.elem[0] ) BiSearch( ST, low, mid-1 );if( ST.elem[mid] < ST.elem[0] ) BiSearch( ST, mid+1, high);}elsereturn (mid);}int Search_Bi( SSTable *ST ,KeyType key ){//在表ST中折半查找元素key(*ST).elem[0] = key;return( BiSearch ( ST, 1, (*ST).length ) );}3. 编写判别给定二叉树是否为二叉排序树的算法。
数据结构五详细答案
习题 51.填空题(1) __________________________________________________________________________ 已知二叉树中叶子数为50,仅有一个孩子的结点数为30,则总结点数为( _______________________ )。
答案:129(2) 3 个结点可构成( ___________ )棵不同形态的二叉树。
答案: 5(3) __________________________________________________________________________ 设树的度为5,其中度为1~5 的结点数分别为6、5、4、3、2 个,则该树共有( ________________ ) 个叶子。
答案:31(4)在结点个数为n (n>1)的各棵普通树中,高度最小的树的高度是( ___________ ),它有( ____________ )个叶子结点,( ______________ )个分支结点。
高度最大的树的高度是( ____________ ),它有( ____________ )个叶子结点,( ______________ )个分支结点。
答案: 2 n-1 1 n 1 n-1( 5)深度为k 的二叉树,至多有( ______________ )个结点。
答案:2k-1(6)(7)有n 个结点并且其高度为n 的二叉树的数目是( _________________ ) 。
n-1答案:2( 8)设只包含根结点的二叉树的高度为0,则高度为k 的二叉树的最大结点数为( ___________ ),最小结点数为( ______________ ) 。
答案:2k+1-1 k+1(9)将一棵有100个结点的完全二叉树按层编号,则编号为49的结点为X,其双亲PARENT(X )的编号为()。
答案:24(10)已知一棵完全二叉树中共有______________ 768 个结点,则该树中共有( )个叶子结点。
湖南大学操作系统作业 (5)
操作系统第五次作业第八章Explain the difference between internal and external fragmentation.简述内部碎片和外部碎片的区别答:内部碎片存在于块的内部,如内存块大小为512k,而某逻辑内存要求一个200k大小的块,此时操作系统会分配给它一个大小为512k的块(由于块是内存分配的最小单元),所以会造成了312k大小的内存碎片,这部分碎片即使是空的也无法使用,称作内部碎片。
减少内部碎片可以通过减小块的大小来解决。
外部碎片是指在连续内存分配的进程装入和移出内存的过程中,空闲的内存空间被分成了较多小片段,这些小片段不连续,所以无法被连续分配,这样会造成即使碎片大小之和大于新进程所需内存,但是也无法给新进程分配的情况,这就是外部碎片。
外部碎片可以通过紧缩来解决。
Given five memory partitions of 100 KB, 500 KB, 200 KB,300 KB, and 600KB (in order), how would each of the first-fit,best-fit, and worst-fit algorithms place processes of 212 KB,417 KB, 112 KB, and 426 KB (in order) Which algorithm makes the most efficient use of memory给出100kb,500kB,200kB,300kB,600kB大小的内存空间(按顺序),对于首次适应,最佳适应和最差适应算法,要按顺序放置212kB,417kB,112kB和426kB 大小的进程会是怎样安排的哪个算法的内存利用率最高答:首次适应是每次从头开始找,直到找到第一个比当前要放置的内存大小要大的内存空间时,放置该内存。
最佳适应是每次遍历内存空间一次,找大于当前要放置的内存块大小要大的中间的最小者,放置该内存。
数据结构第5章作业参考答案
第5章树和二叉树一、单项选择题1.以下说法错误的是(B )。
A. 存在这样的二叉树,对其采用任何次序的遍历其结点访问序列均相同B. 二叉树是树的特殊情形C. 满二叉树中所有叶结点都在同一层上D. 在二叉树只有一棵子树的情况下,也要指出是左子树还是右子树2.树最适合用来表示( C)。
A.有序数据元素B.无序数据元素C.元素之间具有分支层次关系的数据D.元素之间无联系的数据3.下列叙述正确的是(C )。
A. 二叉树是度为2的有序树B. 完全二叉树一定存在度为1的结点C. 深度为k的二叉树中结点总数≤2k-1D. 对于有n个结点的二叉树,其高度为⎣log2n⎦+14.按照二叉树的定义,具有三个节点的二叉树有( C )种。
A.3B.4C.5D.65.下列叙述中正确的是(C )。
A. 二叉树是度为2的有序树B. 二叉树中的结点只有一个孩子时无左右之分C. 二叉树中每个结点最多只有两棵子树,并且有左右之分D. 二叉树若存在两个结点,则必有一个为根,另一个为左孩子6.设某二叉树中度数为0的结点数为N0,度数为1的结点数为N l,度数为2的结点数为N2,则下列等式成立的是( C )。
A.N0=N1+1 B.N=Nl+N2C.N=N2+1 D.N=2N1+17.设按照从上到下、从左到右的顺序从1开始对完全二叉树进行顺序编号,则编号为i结点的左孩子结点的编号为( B )。
A. 2i+1B.2iC.i/2D.2i-18.有100个结点的完全二叉树由根开始从上到下从左到右对结点进行编号,根结点的编号为1,编号为46的结点的右孩子的编号为( C )A.50 B.92 C.93 D.869.若一棵有n个结点的树,则该树中的度之和为(C )。
A. n+1B. nC. n-1D. 不确定10.已知完全二叉树有90个结点,则整个二叉树有( B )个度为1的结点。
A 0B 1C 2D 不确定11.一棵完全二叉树上有1001个结点,其中叶子结点的个数是(C )。
《数据结构》第五章习题参考答案
《数据结构》第五章习题参考答案一、判断题(在正确说法的题后括号中打“√”,错误说法的题后括号中打“×”)1、知道一颗树的先序序列和后序序列可唯一确定这颗树。
( ×)2、二叉树的左右子树可任意交换。
(×)3、任何一颗二叉树的叶子节点在先序、中序和后序遍历序列中的相对次序不发生改变。
(√)4、哈夫曼树是带权路径最短的树,路径上权值较大的结点离根较近。
(√)5、用一维数组存储二叉树时,总是以前序遍历顺序存储结点。
( ×)6、完全二叉树中,若一个结点没有左孩子,则它必是叶子结点。
( √)7、一棵树中的叶子数一定等于与其对应的二叉树的叶子数。
(×)8、度为2的树就是二叉树。
(×)二、单项选择题1.具有10个叶结点的二叉树中有( B )个度为2的结点。
A.8 B.9 C.10 D.112.树的后根遍历序列等同于该树对应的二叉树的( B )。
A. 先序序列B. 中序序列C. 后序序列3、二叉树的先序遍历和中序遍历如下:先序遍历:EFHIGJK;中序遍历:HFIEJKG 。
该二叉树根的右子树的根是:( C )A. EB. FC. GD. H04、在下述结论中,正确的是( D )。
①具有n个结点的完全二叉树的深度k必为┌log2(n+1)┐;②二叉树的度为2;③二叉树的左右子树可任意交换;④一棵深度为k(k≥1)且有2k-1个结点的二叉树称为满二叉树。
A.①②③B.②③④C.①②④D.①④5、某二叉树的后序遍历序列与先序遍历序列正好相反,则该二叉树一定是( D )。
A.空或只有一个结点B.完全二叉树C.二叉排序树D.高度等于其结点数三、填空题1、对于一棵具有n个结点的二叉树,对应二叉链接表中指针总数为__2n____个,其中___n-1_____个用于指向孩子结点,___n+1___个指针空闲着。
2、一棵深度为k(k≥1)的满二叉树有_____2k-1______个叶子结点。
数据结构课后习题及解析第五章
第五章习题5.1 假设有6行8列的二维数组A,每个元素占用6个字节,存储器按字节编址。
已知A的基地址为1000,计算:数组A共占用多少字节;数组A的最后一个元素的地址;按行存储时元素A36的地址;按列存储时元素A36的地址;5.2 设有三对角矩阵An×n ,将其三条对角线上的元素逐行地存于数组B(1:3n-2)中,使得B[k]= aij,求:(1)用i,j表示k的下标变换公式;(2)用k表示i,j的下标变换公式。
5.3假设稀疏矩阵A和B均以三元组表作为存储结构。
试写出矩阵相加的算法,另设三元组表C存放结果矩阵。
5.4在稀疏矩阵的快速转置算法5.2中,将计算position[col]的方法稍加改动,使算法只占用一个辅助向量空间。
5.5写一个在十字链表中删除非零元素aij的算法。
5.6画出下面广义表的两种存储结构图示:((((a), b)), ((( ), d), (e, f)))5.7求下列广义表运算的结果:(1)HEAD[((a,b),(c,d))];(2)TAIL[((a,b),(c,d))];(3)TAIL[HEAD[((a,b),(c,d))]];(4)HEAD[TAIL[HEAD[((a,b),(c,d))]]];(5)TAIL[HEAD[TAIL[((a,b),(c,d))]]];实习题若矩阵Am×n 中的某个元素aij是第i行中的最小值,同时又是第j列中的最大值,则称此元素为该矩阵中的一个马鞍点。
假设以二维数组存储矩阵,试编写算法求出矩阵中的所有马鞍点。
第五章答案5.2设有三对角矩阵A n×n,将其三条对角线上的元素逐行的存于数组B[1..3n-2]中,使得B[k]=a ij,求:(1)用i,j表示k的下标变换公式;(2)用k表示i、j的下标变换公式。
【解答】(1)k=2(i-1)+j(2) i=[k/3]+1, j=[k/3]+k%3 ([ ]取整,%取余)5.4在稀疏矩阵的快速转置算法5.2中,将计算position[col]的方法稍加改动,使算法只占用一个辅助向量空间。
数据结构第五章 查找 答案
数据结构与算法上机作业第五章查找一、选择题1、若构造一棵具有n个结点的二叉排序树,在最坏情况下,其高度不超过 B 。
A. n/2B. nC. (n+1)/2D. n+12、分别以下列序列构造二叉排序数(二叉查找树),与用其他3个序列所构造的结果不同的是 C :A. (100, 80, 90, 60, 120, 110, 130)B. (100, 120, 110, 130, 80, 60, 90)C. (100, 60, 80, 90, 120, 110, 130)D. (100, 80, 60, 90, 120, 130, 110)3、不可能生成下图所示的二叉排序树的关键字的序列是 A 。
A. 4 5 3 1 2B. 4 2 5 3 1C. 4 5 2 1 3D. 4 2 3 1 54、在二叉平衡树中插入一个结点造成了不平衡,设最低的不平衡点为A,并已知A的左孩子的平衡因子为0,右孩子的平衡因子为1,则应作 C 型调整使其平衡。
A. LLB. LRC. RLD. RR5、一棵高度为k的二叉平衡树,其每个非叶结点的平衡因子均为0,则该树共有 C 个结点。
A. 2k-1-1B. 2k-1+1C. 2k-1D. 2k+16、具有5层结点的平衡二叉树至少有 A 个结点。
A. 12B. 11C. 10D. 97、下面关于B-和B+树的叙述中,不正确的是 C 。
A. B-树和B+树都是平衡的多叉树B. B-树和B+树都可用于文件的索引结构C. B-树和B+树都能有效地支持顺序检索D. B-树和B+树都能有效地支持随机检索8、下列关于m阶B-树的说法错误的是 D 。
A. 根结点至多有m棵子树B. 所有叶子结点都在同一层次C. 非叶结点至少有m/2(m为偶数)或m/2+1(m为奇数)棵子树D. 根结点中的数据是有序的9、下面关于哈希查找的说法正确的是 C 。
A. 哈希函数构造得越复杂越好,因为这样随机性好,冲突小B. 除留余数法是所有哈希函数中最好的C. 不存在特别好与坏的哈希函数,要视情况而定D. 若需在哈希表中删去一个元素,不管用何种方法解决冲突都只要简单地将该元素删去即可10、与其他查找方法相比,散列查找法的特点是 C 。
