四、算法閱讀題(本大題共4小題,每小題5分,共20分)
30.已知下列程序,Ls指向帶頭結(jié)點的單鏈表。
Typedefstruct node {
DataType data;
struct node * next;
} * LinkList;
void f30( LinkList Ls )
{ LinkList p, q;
q = Ls->next;
if ( q && q->next ) {
Ls->next = q->next;
p=q
while ( p->next )
p = p->next;
p->next = q;
q->next = NULL;
}
}
請回答下列問題:
(1)當(dāng)Ls指向的鏈表如下圖所示,請畫出執(zhí)行本函數(shù)之后的鏈表的結(jié)果。
(2)請簡述算法的功能。
31.已知字符串處理函數(shù)f31程序如下。
int f31(char*strl,char*str2)
{ while(*strl==*str2&&(*strl!=’\0’)){
strl++;
str2++;
}
return(*strl-*str2 ? l∶0);
}
請回答下列問題:
(1)若調(diào)用語句是f31(”abcde”,”abcdf’),則函數(shù)的返回值是什么?若調(diào)用語句是 f31(”abcde”,”abcde”),則函數(shù)的返回值是什么?
(2)簡述該函數(shù)的功能。
32.數(shù)組A[]中存儲有n個整數(shù),請閱讀下列程序。
void f32(intA[],int n)
{ inti,j,k,x;
k=n-l;
while(k>0){
i=k; k=0;
for(j=O;j
if(A[j]>A[j+1]){
x=A[j];
A[j]=A[j+l];
A[j+1]=x;
k=j;
}//end of if
}//end of while
return;
}
請回答下列問題:
(1)當(dāng)A[]={10,8,2,4,6,7}時,執(zhí)行f32(A,6)后,數(shù)組A中存儲的結(jié)果是什么?
(2)說明該算法的功能。