文章
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分)
得分:4分
理由:学生的基本设计思想描述正确,与标准答案一致,使用双指针方法通过一趟扫描找到倒数第k个结点。但未明确说明初始时指针指向头结点的下一个结点(即第一个实际结点),而直接说“指向链表头指针”,这里存在表述不严谨,扣1分。
(2)得分及理由(满分5分)
得分:3分
理由:学生描述了大致步骤,但存在以下问题:①未明确初始化count或索引计数(仅用i代替,但未说明i的初始值);②未处理k=0或k大于链表长度的情况(仅提到“当i小于k,fir没有后一个结点时返回0”,但逻辑不完整);③未说明循环终止条件(fir到...
登录后发布评论
暂无评论,来抢沙发