需要考虑:有无交集;有多个字符相同,但只有最后两个是公共的;有一个单词为空;全相等;
汇总网上代码,解析如下:
首先求出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; }
原文地址:https://www.cnblogs.com/hzy-bwd/p/11565872.html
时间: 2024-11-09 04:46:48