文章
26
粉丝
253
获赞
1
访问
15.2k
1. 1.设置一个快慢指针 用来遍历较长的链表 和一个普通指针遍历较短的链表
2.设置一个count用来计录当前的位置
3.循环遍历两个链表
2.
#include<stdio.h>
void fun(List *str1 ,List *str2 ){
List *p=str1;
List *q=p->next;
List *L=str2->next;
int count=0;
while(q!=NULL&&L!=NULL){
if(p->data!=L->data&&L->data!=q->data){
p=p->next;
q=q->next;
L=L->next;
count ++;
} else if(L->data==q->data){
printf("%d",count);
break;
}else if(q->data==L->data){
printf("str1的起始位置是 %d str2的起始位置是",count++,count);
break;
}
}
}
3 O(n)
评分及理由
(1)得分及理由(满分4分)
得分:1分
理由:学生的基本设计思想描述非常模糊,只提到了使用快慢指针和普通指针,但没有说明如何确定链表长度差异以及如何对齐链表。没有清晰表达出通过计算链表长度差来同步遍历的核心思想。但提到了遍历两个链表,部分涉及了算法思路,因此给1分。
(2)得分及理由(满分8分)
得分:2分
理由:代码存在多处严重问题:
1. 函数参数类型不明确,List未定义
2. 算法逻辑错误:没有先计算链表长度差,直接同步遍历无...
登录后发布评论
暂无评论,来抢沙发