若有声明“longfun(int*x,intn,long*s);inta[4]={1,2,3,4};longb,c;”,则以下函数调用形式中正确的是_______。
A.c=fun(a,4,b);
B.c=fun(a[],4,&b);
C.c=fun(a[4],4,b);
D.c=fun(a,4,&b);
A.c=fun(a,4,b);
B.c=fun(a[],4,&b);
C.c=fun(a[4],4,b);
D.c=fun(a,4,&b);
A.switch(a+b){ case 1:printf("*/n");case 2*a:printf("* */n");}
B.switch(x){ case 1.0:printf("*/n");case 2.0:printf("* */n");}
C.switch(x){ case 1,2:printf("*/n");case 3:printf("* */n");}
D.switch(a+b){ case 1:printf("*/n");case 1+2:printf("* */n");}
A.8
B.7
C.5
D.6
A.min=7 at (x,y):(3,1)
B.min=7 at (x,y):(3,3)
C.min=3 at (x,y):(1,3)
D.7 3 3
以下为单链表的插入运算,分析算法,请在______处填上正确的语句。
void insert_lklist(lklist head,datatype x,int i)
/*在表head的第i个位置上插入一个以x为值的新结点*/
{ p=find_lklist(head,i-1);
if(p==NULL)error("不存在第i个位置");
else{s=______;s—>data=x;
s—>next=______;
p—>next=s;
}
}
根据文字说明,请在以下______处填充适当的语句。
采用静态链表作存储结构,设置一个大小为2n-1的数组,令数组的每个元素由四个域组成:wt是结点的权值;lehild、rchild分别为结点的左、右孩子指针;parent是结点的双亲在数组中的下标。其数组元素类型定义如下:
typedef struet
{ float wt; /*权值*/
int parent,lchild rchild; /*指针域*/
}node;
typedef node hftree[2*n-1];
在这种存储结构上的哈夫曼算法可描述如下:
void huffman(int k,float W[k],hftree T) /*求给定权值W的哈夫曼树T*/
{ int i,j,x,y;
float m,n;
for(i=0;i<2*k-1;i++)
{ T[i].parent=-1;T[i].lchild=-1;T[i].rchild=-1;
if(______)T[i].wt=W[i];
else T[i].wt=0
}
for(i=0;i<k-1;i++)
{ x=0;y=0;m=maxint;n=maxint;
for(j=0;j<k-i,j++)
if(T[j].wt<m)&&(T[j].parent==-1){n=m;y=___;m=___;x=j;}
else if(T[j].wt<n)&&(T[j].parent==-1)){n=T[j].wt;y=j;)
}
T[x].parent=______;T[y].parent=______;
T[k+i].wt=______;
T[k+i].lchild=______;T[k+i].rchild=______;
}
阅读下列算法,并回答问题:
(1)设顺序表L=(3,7,11,14,20,51),写出执行f30(&L,15)之后的L;
(2)设顺序表L=(4,7,10,14,20,51),写出执行f30(&L,10)之后的L;
(3)简述算法的功能。
void f30(SeqList*L,DataType x)
{
int i=0,j;
while(i<L->length&&x>L->data[i])i++
if(i<L—>length&& x==L—>data[i]{
for(j=i+1;j<L—>length;j++)
L—>data[j-1]=L—>data[j];
L—>length--;
}else{
for(j=L—>length;j>i;j--)
L—>data[j]=L—>data[j-1];
L—>data[i]=x;
L—>length++;
}
}