文章
3
粉丝
0
获赞
0
访问
310
(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分
登录后发布评论
暂无评论,来抢沙发