当前位置: 首页> 房产> 建筑 > 判断一个链表是否为另外一个链表的连续子序列

判断一个链表是否为另外一个链表的连续子序列

时间:2025/8/3 13:23:01来源:https://blog.csdn.net/m0_56332819/article/details/142109078 浏览次数:0次

两个整数序列A=a1,a2,a3......am,B=b1,b2,b3.....bn已经存入两个单链表中,设计一个算法,判断序列B是否为A的连续子序列。

思想:

从前往后比较两个链表,若相等,则两个表的工作指针均向后移动,若不同,则A表从上次开始比较节点的后继节点开始,B表从第一个元素开始比较。当表B遍历完后,则说明是子序列,若A表先遍历完,则不是子序列。

代码:

bool containB(LinkList A,LinkList B){LNode *p=A;//A工作指针 LNode pre=p;//用来标记每趟A链表开始的节点 LNode *q=B;//B工作指针 while(p!=NULL && q!=NULL){if(p->data==q->data){//值相同时,两个表的工作指针均向后后移 p=p->next;q=q->next;}else{//值不相等时,A表从这一趟开始节点的后一个节点开始。//B表从第一个元素开始 pre=pre->next;p=pre;q=B;}}if(q==NULL){//B表结束,说明是A序列 return true;}else{//B不是A的序列 return false;}} 

时间复杂度O(m+n),空间复杂度O(1)

关键字:判断一个链表是否为另外一个链表的连续子序列

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: