应用题
5.两个整数序列A=a1,a2,a3,…,am和B=b1,b2,b3,…,bn已经存入两个单链表中,设计一个算法,判断序列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的子序列
}
}//算法结束
【答案解析】