两个整数序列A=a 1 ,a 2 ,a 3 ,…,a n 和B=b 1 ,b 2 ,b 3 ,…,b n 已经存入两个单链表中,设计一个算法,判断序列B是否是序列A的子序列。
【正确答案】正确答案:typedef struct LNode{ int data; struct LNode*next; }*Linkedlist; int Pattern(LinkedList A,B){ //A和B分别是数据域为整数的单链表,本算法判断链表B是否是 //链表A的子序列。如是,返回1;否则,返回0,表示失败。 Linkedlist*P,*pre,*q: p=A; //p为链表A的工作指针,本题假定链表A和链表B均无头结点 pre=p; //pre记住每趟比较中链表A的开始结点 q=B; //q是链表B的工作指针 while(p&&q) if(p一>data==q一>data){P=p->next;q=q->next; } else{ pre=pre->next;P=pre;//链表A新的开始比较结点 q=B; //q从链表B第一结点开始 if(q==null)return(1); //链表B是链表A的子序列 else return(0); //链表B不是链表A的子序列 } }//算法结束
【答案解析】