PTA数据结构链表共享后缀的链表

需要考虑:有无交集;有多个字符相同,但只有最后两个是公共的;有一个单词为空;全相等;

汇总网上代码,解析如下:

首先求出len1和len2,若len1>len2,令p1指向链表中的第len1-len2+1个结点,若len2>len1,令p2指向链表中的第len2-len1+1个结点 ,然后将指针P1和p2同步向后移动,直到P1和p2指向同一结点再比较接下来的几个节点

 

PtrToNode Suffix( List L1, List L2 )
{
    List P1,P2;
    P1=L1->Next;
    P2=L2->Next;
    int len1=0,len2=0;
    while(P1)//求链表1的长度 len1
    {
        len1++;
        P1=P1->Next;
    }
    while(P2)                          //求链表2的长度 len2
    {
        len2++;
        P2=P2->Next;
    }
    for(P1=L1;len1>len2;len1--)       //若len1>len2,令p1指向链表中的第len1-len2+1个结点 
        P1=P1->Next;
    for(P2=L2;len2>len1;len2--)      //若len2>len1,令p2指向链表中的第len2-len1+1个结点  
        P2=P2->Next;
    while(P1->Next!=P2->Next) 
    {
                                    /*将指针P1和p2同步向后移动, 直到P1和p2指向同一结点 */
        P1=P1->Next;
        P2=P2->Next;
    }
    return P1->Next; 
}

 

posted on 2019-09-22 08:57  HR_Zy  阅读(511)  评论(0编辑  收藏  举报