【正确答案】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的子序列
}
}//算法结束
【答案解析】