写出“天道无亲,常与善人”的大意。(6分) 答:_________________________________________________________________________
阅读下列算法,并回答问题:
(1)假设数组L[8]={3,0,5,1,6,4,2,7},写出执行函数调用f32(L,8)后的L;
(2)写出上述函数调用过程中进行元素交换操作的总次数。
void fS2(int R[],int n){
int i,t;
for(i=0;i<n-1;i++)
while(R[i]!=i){
t=R[R[i-1];
R[R[i]]=R[i];
R[i]=t;
}
}
已知Ackerman函数定义如下:
(1)根据定义,写出它的递归求解算法;
(2)利用栈,写出它的非递归求解算法。
阅读下列算法,并回答问题:
(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++;
}
}
已知线性表的存储结构为顺序表,阅读下列算法,并回答问题:
(1)设线性表L=(21,-7,-8,19,0,-11,34,30,-10),写出执行f30(&L)后的L状态;
(2)简述算法f30的功能。
void f30(SeqList*L){
int i,j;
for(i=j=0;i<L—>length;i++)
if(L—>data[i]>=0){
if(i!=j)L—>data[j]=L—>data[i];
j++;
}
L—>length=j;
}
已知Ackerman函数的定义如下:
(1)写出递归算法;
(2)写出非递归算法;
(3)根据非递归算法, 画出求akm(2,1)时栈的变化过程。