文章
50
粉丝
0
获赞
0
访问
2.4k
(1)设置2个指针,第一个指针先前进到指针第k个位置,然后第二个指针再和第一个指针同时前进,当第一个指针到达链表尾结点时,第二个指针所在位置就是倒数第k个位置
(2)设置指针fir,sec指向链表头指针,设置i表示fir指向哪个结点,当i小于k,i++,fir指向后一个结点,然后让fir和sec同时增加,当fir没有后一个结点时返回sec所指结点的值,当i小于k,fir没有后一个结点时返回0。
(3)
int find(node* list){
node* fir=list;
node* fir=list;
for(int i=0;i<k;i++){
if(fir->link==null){
return 0;
}
fir=fir->link;
}
while(fir->link!=null){
fir=fir->link;
sec=sec->link'
}
return sec->data;
}
评分及理由
(1)得分及理由(满分5分)
得分:5分
理由:学生的基本设计思想与标准答案一致,描述清晰。通过两个指针(fir和sec),先让fir移动k步,然后两个指针同步移动,当fir到达链表尾部时,sec指向倒数第k个结点。思路正确且高效,符合一趟扫描的要求。
(2)得分及理由(满分5分)
得分:3分
理由:学生描述了大致步骤,但存在细节错误和表述不严谨。例如:
① 初始时fir和sec应指向头结点的下一个结点(即第一个实际结点),但学生写的是“指向链表头指针”,而头指针通常指向头结点(表头结点),这里表述不准确。
② 步骤中未明确计数变量i的初始值和更新条件,...
登录后发布评论
暂无评论,来抢沙发