文章

3

粉丝

0

获赞

0

访问

310

头像
【2009年】408计算机统考真题模拟考试 - 第42题答案笔记
数据结构
发布于2025年5月25日 19:23
阅读数 121

计算机考研408统考历年真题及答案解析

(1):维护两个指针,将一个指针向前移动k步,然后两个指针同时向后移动直到第一个指针的next域为空,则打印后一个指针的data域

(2):定义两个指针分别为q和p,让q循环k次指向q->next,并每次循环都判断q->next是否为空,如果为空则返回0证明没有倒数第k个结点,循环结束后两个指针同时向后移动,并用q->next==NULL作为循环的结束条件,循环结束后打印p的data域的值并返回1即可。

(3):

int SearchNumber(Link Q,int k){

Link q=Q;

Link p=Q;

int num=k;

while(num>0){//让q指针循环k次,如果过程中遇到NULL则直接返回0,查找失败

if(q->next==NULL)

{

return 0;

}

q=q->next;

num--;

}//while

while(q->next!=NULL){

q=q->next;

p=p->next;

}//两指针遍历找到末尾结点

printf("%d",&p->data);

return 1;

}//SearchNumber

 

 


评分及理由

(1)得分及理由(满分5分)

得分:5分

理由:学生的设计思想与标准答案一致,描述清晰,准确表达了通过两个指针同步移动来查找倒数第k个结点的思路。

(2)得分及理由(满分5分)

得分:5分

理由:学生的实现步骤与标准答案基本一致,详细描述了指针移动的过程和终止条件,逻辑清晰。

(3)得分及理由(满分5分)

得分:4分

理由:代码实现基本正确,但存在以下问题:
1. 在打印`p->data`时,使用了`&p->data`,这是错误的,应该直接使用`p->data`。
2. 代码中的`Link Q`未定义类型,假设与标准答案中的`LinkList`一致。
3. 其他部分逻辑正确,与标准答案一致。

题目总分:5+5+4=14分

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发