假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间,例如,“loading”和“being”的存储映像如下图所示。 设str1和str2分别指向两个单词所在单链表的头结点,链表结点结构为,请设计一个时间上尽可能高效的算

admin2015-12-30  42

问题 假定采用带头结点的单链表保存单词,当两个单词有相同的后缀时,则可共享相同的后缀存储空间,例如,“loading”和“being”的存储映像如下图所示。

设str1和str2分别指向两个单词所在单链表的头结点,链表结点结构为,请设计一个时间上尽可能高效的算法,找出由str1和str2所指向两个链表共同后缀的起始位置(如图中字符i所在结点的位置p)。
要求:
根据设计思想,采用C或C++或JAVA语言描述算法,关键之处给出注释。

选项

答案算法的C语言代码描述: LinkNode *Find_lst_Common(LinkList str1,LinkList str2){ int len1=Length(str1),len2=Length(str2), LinkNode *p,*q, for(p*str1;len1>len2;len1--)//使p指向的链表与q指向的链表等长 p=p->next, for(q=str2,len1<fen2;len2--)//使q指向的链表与p指向的链表等长 q=q->next; while (p->next!=NuLL&&p->next!=q->next){//查找共同后缀起始点 p=p->next;//两个指针同步向后移动 q=q->next} } return p->next;//返回共同后缀的起始点 }

解析
转载请注明原文地址:https://jikaoti.com/ti/UMajFFFM
0

最新回复(0)