关于在共享后缀的链表遇到段错误求解

提交答案后显示的错误为段错误

img

题目为找出两个链表的公共后缀。
L1和L2都是给定的带头结点的单链表。函数Suffix应返回L1和L2的公共后缀的起点位置。

由于题目为函数题,输入为题目完成。

以下为我的代码:

PtrToNode Suffix( List L1, List L2 )
{
int i;

List P;
List R;
List Q;
List S;
P = L2->Next;
R = L1->Next;
while(P!=NULL)
{
    for(i=0;;i++)
    {
                
          if(P->Data==R->Data)
         {
     
                 Q = P;
                 S = R;
                     while(Q->Data==S->Data)
                     {
                            Q=Q->Next;
                            S=S->Next;
                            if(Q==NULL&&S==NULL)
                           {
                              return R;
                            }
              
                     }
          
        }
          
        if(R->Next==NULL)
      {
                 break;
      }
                  
       R=R->Next;
      
    }
    
    R=L1->Next;
    P=P->Next;
}

return NULL;

}

我觉得应该是这段代码导致段错误。

while(Q&&S&&Q->Data==S->Data)//这里要判断一下Q和S是否是NULL
{
    Q=Q->Next;
    S=S->Next;
    if(Q==NULL&&S==NULL)
    {
        return R;
    }           
}