好文档 - 专业文书写作范文服务资料分享网站

自考数据结构试题和答案

天下 分享 时间: 加入收藏 我要投稿 点赞

删除单链表的中间结点和尾结点。 31.已知字符串处理函数f31程序如下。 int f31(char*strl,char*str2)

{ while(*strl==*str2&&(*strl!=’\0’)){

strl++; str2++; }

return(*strl-*str2 ? l∶0); }

请回答下列问题:

(1) 若调用语句是f31(”abcde”,”abcdf”),则函数的返回值是什么?

答:

A的ASCII 065 A的ASCII 097

由于'e '对应的ASCII码是101,'f'对应的ASCII码是102,则'e '—'f'=101—102=-1 再按照条件表达式的形式为 逻辑表达式?表达式1:表达式2

若逻辑表达式的值为非零,则条件表达式的值等于表达式1的值;若逻辑表达式的值为零,则条件表达式的值等于表达式2的值。 则函数的返回值是1。

若调用语句是 f31(”abcde”,”abcde”),则函数的返回值是什么? 答:由于字符串结束标识'\\0'对应的ASCII码是0,则*strl-*str2=0 再按照条件表达式的形式为 逻辑表达式?表达式1:表达式2

若逻辑表达式的值为非零,则条件表达式的值等于表达式1的值;若逻辑表达式的值为零,则条件表达式的值等于表达式2的值。 则函数的返回值是0。 (2)简述该函数的功能。

答:如果两个字符串结点*strl和*strl中的字符相等,且字符串结点*strl中的字符不等于字符串结束标识'\\0',则两个字符串结点*strl和*strl中的字符指针自加运算。如果条件不满足,则字符串结点*strl和*strl中的字符相减。若逻辑表达式的值为非零,则条件表达式的值等于1;若逻辑表达式的值为零,则条件表达式的值等于0。

32.数组A[]中存储有n个整数,请阅读下列程序。 void f32(intA[],int n)

{ int i,j,k,x;

k=n-l; while(k>0){

i=k; k=0; for(j=O;jA[j+1]){ x=A[j]; A[j]=A[j+l]; A[j+1]=x; k=j; }//end of if }//end of while return; }

请回答下列问题:

(1)当A[]={10,8,2,4,6,7}时,执行f32(A,6)后,数组A中存储的结果是什么? 答:数组A中存储的结果是10。 (2)说明该算法的功能。

答:数组A[]中存储有n个整数,当k=n-1时,则第k个向量是最后一个整数。

当k>0时,即数组A[]非空时,设i=k,k=0,如果j=0,且j

进行交换,同时令k=j。

如果j大于等于i(即j大于等于k)时,则结束执行if语句和while语句,并返回。 33.下面程序实现二分查找算法。 Typedef struct{

KeyType key; InfoType otherinfo; }SeqList[N+1];

int BinSearch(SeqList R, int n,KeyType K) { int low=1,high=n; while( (1)low<=high ){

mid=(1ow+high)/2; if( (2)R[mid].key==K )

return mid; if(R[mid].key>K)

high=mid-1; else

(3)low=mid+1 ;

}

return O; } //BinSearch

请在空白处填写适当内容,使该程序功能完整。 (1) low<=high (2) R[mid].key==K (3) low=mid+1

五、算法设计题(本题10分)

34.已知二叉树采用二叉链表存储,其结点结构定义如下: typedef struct Node{

ElmType data;

struct Node *lchild,*rchild; }*BiTree;

请编写递归函数SumNodes(BiTree T),返回二叉树T的结点总数。 递归含义见P44

辅导书P64 P74第四题的第2小题中

答:求二叉数的结点总数满足如下的递归定义: ①若T为空,则以T为根的二叉树中结点总数为0;

②否则,以T为根的二叉树中结点总数应该是根T的左子树和右子树中结点数之和再加上根本身。int SumNodes(BiTree T){

//T的初值指向某二叉链表的根结点 if(! T) //T为空 return 0; else

return SumNodes(T->lchild)+ SumNodes(T->rchild)+1;

}

辅导书P66 P76第四题的第2小题中

问:写一递归算法求二叉树中度为2的结点总数 答:二叉树中度2度结点数的递归定义如下:

①当T为空或T是叶子时,以T为根的二叉树的2度结点数为0;

②当T是2度结点时,以T为根的二叉树的2度结点数为T的左右子树中2度结点数之和再加上T结点本身; ③当T是1度结点时,以T为根的二叉树中2度结点数为T的左右子树中2度结点数之和。 算法如下:

int D2Nodes(BinTree T){

if(! T‖! T->lchild && ! T->rchild)

//逻辑运算符的执行优先次序是:!非->&&与->‖或,即T为空或T是叶子 return 0;

if(T->lchild && T->rchild)//T是2度结点 return 1+D2Nodes(T->lchild)+D2Nodes(T->rchild); else //T是1度结点

return D2Nodes(T->lchild)+D2Nodes(T->rchild); }

二、在任何事情上都不要觉得自己受了多大的委屈,哭哭啼啼和别别扭扭改变不了糟糕的现状。心子开一点,认真地该干啥干啥,反倒走得顺畅许多。扛得住多少东西,最后 “忽然想通了”,这五个字说来简单,要做到可真不容易。我佛如来在菩堤树下得道,就因为他“忽然想通了”.达摩祖师面壁十八年,才总算“忽然想通了”.无论什么事,你只要能“忽然想通了”,你就不会有烦恼,但达到这地步之前,你一定 就会得到多少东西,大致就是这么个理儿吧。 三、生命本没有意义,你要能给他什么意义,他就有什么意义。与其终日冥想人生有何意义,不如试用此生做点有意义的事。 四、爱怕沉默。太多的人,以为爱到深处是无言。其实,爱是很难描述的一种情感,需要详尽的表达和传递。 五、有些路,只能一个人走。 六、有一种落差是,你配不上自己的野心,也辜负了所受的苦难。 七、有些决定,只需要一分钟,可是,却会用一辈子,去后悔那一分钟。 八、已不知道有过多少烦恼。 九、如果他总为别人撑伞,你何苦非为他等在雨中。

十、我对前任的感觉很简单,哪怕他的女朋友来我面前秀恩爱,我也不会觉得烦。就像在看别人吃一碗很香的卤肉饭,吧唧嘴巴弄得很大声,但我自己心里是明白的:我吃过那种饭,其实没那么好吃。 十一、为什么我们总是不懂得珍惜眼前人?在未可预知的重逢里,我们以为总会重逢,总会有缘再会,总以为有机会说一声对不起,却从没想过每一次挥手道别,都可能是诀别,每一声叹息,都可能是人间最后的一声叹息。 十二、我在最好的时候碰到你,是我的运气。可惜我没时间了。想想,说人生无悔,都是赌气的话。人生若无悔,那该多无趣啊。我心里有过你。可我也只能到喜欢为止了。 十三、我说不出来为什么爱你,但我知道,你就是我不爱别人的理由。 十四、当你在转圈的时候,这个世界很大,当你勇往直前,这个世界就很小。 十五、现在男女之间的恋爱,总是答应太快,结果分手也快。人性的规律是容易得到的就容易放弃。凡是通过努力得到的,不管是感情还是物品,都会使人顿生珍惜之感。所以在感情上,当

自考数据结构试题和答案

删除单链表的中间结点和尾结点。31.已知字符串处理函数f31程序如下。intf31(char*strl,char*str2){while(*strl==*str2&&(*strl!=’\0’)){strl++;str2++;}return(*strl-*s
推荐度:
点击下载文档文档为doc格式
03n2b4zctm86wqu5roq73pebe0io3700lmv
领取福利

微信扫码领取福利

微信扫码分享