题目
此解的优点
方便理解,很形象,代码简单,个人认为比王道的好理解
思路
str1的所有结点指向新建的辅助结点a
然后遍历str2,当遍历到某结点p,且p的下一个结点是a时,则p为答案,return p
图解
代码
//结构体结点
typedef struct LNode {
char data;
struct LNode *next;
} LNode, *LinkList;
//题解方法***
LNode *fun(LNode *l1, LNode *l2) {
//辅助结点a
LNode * a=(LNode*) malloc(sizeof (LNode*));
a->data='*';
//让l1所有结点都指向a
LNode *p=l1->next;
while (p!=NULL){
LNode *temp=p->next;
p->next=a;
p=temp;
}
//遍历l2,发现某结点的下一节点为a时,则是目标结点
p=l2->next;
while (p!=NULL){
if(p->next->data=='*')
return p;
p=p->next;
}
复杂度
时间复杂度:O(max(len1,len2)) len1,len2分别为str1长度和str2长度
空间复杂度:1