文章
172
粉丝
0
获赞
0
访问
26.1k
1)同一个指针地址使一样的,所以停止的条件当str1==str2。而两个链表长度不同,他们相差n-m个指针位,所以可以先让长的那个单词的指针现象前n-m位。然后后面同时逐步向前,相等的时候就是后缀起始点。
2)
LNode findSuffix(LLink &A, LLink &B, int n, int m){
LNode *k, *str1=A, *str2=B;
if(n>m)
for(int i=0;i<n-m;i++) str1=str1->next; //str1往前差额
if(m>n)
for(int i=0;i<m-n;i++) str2=str2->next; //str2往前差额
while(str1!=str2){ //同时向后找相交处
str1=str1->next;
str2=str2->next;
}
k = str1; //返回k后缀起始点
return k;
}
3)时间复杂度O(n)
评分及理由
(1)得分及理由(满分4分)
得分:3分
理由:学生的基本设计思想正确,指出了需要先让长链表移动长度差值的步骤,然后同步遍历找到共同结点。但是描述不够精确,没有明确说明需要先计算链表长度,而是直接使用参数n和m(题目未提供),且没有提到需要从第一个公共结点开始比较。扣1分。
(2)得分及理由(满分8分)
得分:5分
理由:
(3)得分及理由(满分1分)...
登录后发布评论
暂无评论,来抢沙发