将插值条件取为n+1个结点上的函数值和一阶导数值,即pn(x)满足的插值多项式称为Hermite插值
将插值条件取为n+1个结点上的函数值和一阶导数值,即pn(x)满足
的插值多项式称为Hermite插值多项式,在微分方程数值求解等研究领域中具有重要作用.它可以取为
将插值条件取为n+1个结点上的函数值和一阶导数值,即pn(x)满足
的插值多项式称为Hermite插值多项式,在微分方程数值求解等研究领域中具有重要作用.它可以取为
A.用指针方式存储有n个结点的二叉树,至少要有n+1个指针
B.m阶B-树中,每个非叶子结点的后继个数≥「m/2」
C.m阶B-树中,具有k个后继的结点,必含有k-1个键值
D.平衡树一定是丰满树
下面关于二叉树的基本性质说明错误的是______ 。
A.在二叉树的第k层上,最多有2k(k≥1)个结点
B.深度为m的二叉树最多有2m-1(m≥1)个结点
C.深度为0的结点(即叶子结点)总是比深度为2的结点多一个
D.具有n个结点的二叉树,其深度至少为[log2n]+1,其中[log2n]表示取不大于log2n的最大整数
问题描述:给定一条有向直线L及L上的n+1个点.有向直线L上的每个点x都有权值w(xi),每条有向边都有一个非负边长.有向直线L上的每个点x可以看作客户,其服务需求量为w(xi)e每条边的边长可以看作运输费用.如果在点xi处未设置服务机构,则将点xi处的服务需求沿有向边转移到点xj处服务机构需付出的服务转移费用为.在点x0处已设置了服务机构,现在要在直线L上增设2处服务机构,使得整体服务转移费用最小.
算法设计:对于给定的有向直线L,计算在直线L上增设2处服务机构的最小服务转移费用.
数据输入:由文件input.txt给出输入数据.第1行有1个正整数m,表示有向直线L上除了点x0还有n个点接下来的n行中,每行有2个整数.第i+1行的2个整数分别表示和.
结果输出:将计算的最小服务转移费用输出到文件output.txt.
关于满二叉树、完全二叉树有以下说法:
①满二叉树不仅是一种特殊形态的二叉树,而且是一种特殊的完全二叉树。
②具有n个结点的满二叉树的高度为+1。
③具有n个结点的完全二叉树的高度为+1。
④具有n个结点的满二叉树的高度为log2(n+1)。
⑤具有n个结点的满二叉树共有叶子结点。
其中______最全面、最准确。
A.①②④
B.③④⑤
C.①③④⑤
D.全对
判断下列叙述正确与否。
①顺序存储方式只能用于存储线性结构。
②顺序存储方式的优点是存储密度大,且插入、删除运用算效率高。
③链表的每个结点中都恰好包含一个指针。
④散列法存储的基本思想是由关键码的值决定数据的存储地址。
⑤散列表的结点中只包含数据元素自身的信息,不包含任何指针。
⑥负载因子(装填因子)是散列法的一个重要参数,它反映散列表的装满程度。
⑦栈和队列的存储方式既可是顺序方式,也可是链接方式。
⑧用二叉链表法(llink-rlink法)存储包含n个结点的二叉树,结点的2n个指针区域中有n+1个为空指针。
⑨用相邻矩阵法存储一个图时,在不考虑压缩存储的情况下,所占用的存储空间大小只与图中结点个数有关,而与图的边数无关。
⑩邻接表法只能用于有向图的存储,而相邻矩阵法对于有向图和无向图的存储都适用。
A.n(n+1)/2
B.n2/2
C.(n-1)(n+1)/2
D.n(n-1)/2
Private Type Ang
K As Integer
Sinx As Single
Cosx As Single
End Type
Dim Ksc As Ang
Private Sub Form_Click()
Dim Y As Single
Open 【14】
Y=3.14159 / 180
For I=1 To 90
Ksc.K=I
Ksc.Sinx=Sin(I * Y)
Ksc.Cosx=Cos(I * Y)
【15】
Next I
Close #2
End Sub
阅读以下预备知识、函数说明和C代码,将应填入(n)处的字句写在答题纸的对应栏内。
【预备知识】
①对给定的字符集合及相应的权值,采用哈夫曼算法构造最优二叉树,并用结构数组存储最优二叉树。例如,给定字符集合{a,b,c,d}及其权值2、7、4、5,可构造如图3所示的最优二叉树和相应的结构数组Ht(数组元素Ht[0]不用)(见表5)。
图3最优二叉树
表5 结构数组Ht
结构数组Ht的类型定义如下:
define MAXLEAFNUM 20
struct node{
char ch;/*当前结点表示的字符,对于非叶子结点,此域不用*/
int weight;/*当前结点的权值*/
int parent;/*当前结点的父结点的下标,为0时表示无父结点*/
int lchild,rchild;
/*当前结点的左、右孩子结点的下标,为0时表示无对应的孩子结点*/
}Ht[2*MAXLEAFNUM];
②用′0′或′1′标识最优二叉树中分支的规则是:从一个结点进入其左(右)孩子结点,就用′0′(′1′)标识该分支(示例如图3所示)。
③若用上述规则标识最优二叉树的每条分支后,从根结点开始到叶子结点为止,按经过分支的次序,将相应标识依次排列,可得到由′0′、′1′组成的一个序列,称此序列为该叶子结点的前缀编码。例如图3所示的叶子结点a、b、c、d的前缀编码分别是110、0、111、10。
【函数5.1说明】
函数void LeafCode(int root,int n)的功能是:采用非递归方法,遍历最优二叉树的全部叶子结点,为所有的叶子结点构造前缀编码。其中形参root为最优二叉树的根结点下标;形参n为叶子结点个数。
在构造过程中 ,将Ht[p].weight域用作被遍历结点的遍历状态标志。
【函数5.1】
char**Hc;
void LeafCode(int root,int n)
{/*为最优二叉树中的n个叶子结点构造前缀编码,root是树的根结点下标*/
int i,p=root,cdlen=0;char code[20];
Hc=(char**)malloc((n+1)*sizeof(char*));/*申请字符指针数组*/
for(i=1;i<=p;++i)
Ht[i].weight=0;/*遍历最优二叉树时用作被遍历结点的状态标志*/
while(p){/*以非递归方法遍历最优二叉树,求树中每个叶子结点的编码*/
if(Ht[p].weight==0){/*向左*/
Ht[p].weight=1;
if (Ht[p].lchild !=0) { p=Ht[p].lchild; code[cdlen++]=′0′;}
else if (Ht[p].rchild==0) {/*若是叶子结 点,则保存其前缀编码*/
Hc[p]=(char*)malloc((cdlen+1)*sizeof(char));
(1) ;strcpy(He[p],code);
}
}
else if (Ht[p].weight==1){/*向右*/
Ht[p].weight=2;
if(Ht[p].rchild !=0){p=Ht[p].rchild;code[cdlen++]=′1′;}
}
else{/*Ht[p].weight==2,回退*/
Ht[p].weight=0;
p= (2) ; (3) ;/*退回父结点*/
}
}/*while结束*/
}
【函数5.2说明】
函数void Decode(char*buff,int root)的功能是:将前缀编码序列翻译成叶子结点的字符序列并输出。其中形参root为最优二叉树的根结点下标;形参buff指向前缀编码序列。
【函数5.2】
void Decode(char*buff,int root)
{ int pre=root,p;
while(*buff!=′\0′){
p=root;
while(p!=0){/*存在下标为p的结点*/
pre=p;
if((4) )p=Ht[p].lchild;/*进入左子树*/
else p=Ht[p].rchild;/*进入右子树*/
buff++;/*指向前缀编码序列的下一个字符*/
}
(5) ;
printf(″%c″,Ht[pre].ch);
}
}
A...\Data1.txtFor Random As #1 Len=10 Put #1,i,Ksc
B...\Data1.txtFor Random As #1 Len=10 Put #1,Y,Ksc
C...\Data1.txtFor Random As #1 Put #1,i,Ksc
D...\Data1.txtFor Random As #1 Put #1,Y,Ksc