文章
164
粉丝
0
获赞
1
访问
44.0k
(1)首先利用str1和2的指针向后移动,设置数len1与len2计算两链表长度,之后从头开始,由于最大情况可能仅有短链表全为长链表后缀,设置一个指针mayhead用于存储二者可能相同的后缀起始元素,首先移动长链表指针,此时较长的len--,直到二者len值相同,此时若指针遇到相同元素,设置mayhead为二者中任意一个指针位置,若不同,则同时后移,每次若遇到不同元素,则将mayhead置为NULL,否则不更改mayhead值,直到二链表遍历结束。
(2)
初始化链表,设置链表指针,申请头结点;
Node* str1=head1;
Node* p1 =head1;
Node* str2=head2;
Node* p2 =head2;
void SelectPublic(Node* str1; Nod* str2)
{
int len1=0;
int len2=0;
while(str1->next!=NULL)len1++;
while(str2->next!=NULL)len2++;
str1=p1->next;str2=p2->next;//回到首结点
if(len1>len2) {for(int i=0;i<len1-len2;i++) str1=str1->next;}
else {for(int i=0;i<len2-len1;i++)str2=str2->next;}
Node* mayhead=NULL;
while(str1->next!=NULL)//此时二者指针相对位置相同
{
if(str1->data==str2->data) {if(mayhead==NULL)mayhead=str1;}
if(str1->data!=str2->data){if(mayhead!=NULL)mayhead=NULL;}
str1=str1->next;
str2=str2->next;
}
}
(3)时间复杂度为o(max(len1,len2))
评分及理由
(1)得分及理由(满分4分)
得分:2分
理...
登录后发布评论
暂无评论,来抢沙发