文章

164

粉丝

0

获赞

1

访问

44.0k

头像
2012年(408)计算机学科专业基础综合试题 - 第42题回答
数据结构
发布于2025年11月13日 20:49
阅读数 82

(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分

理...

登录查看完整内容


登录后发布评论

暂无评论,来抢沙发