扫描链表B是否为链表A的字序列
#include <stdio.h>
#include <stdlib.h>
typedef struct LNode
{
int data;
struct LNode *next;
}LNode,*LinkList;
bool InitList(LinkList &L)
{
L=(LNode *)malloc(sizeof(LNode));
if(L==NULL) return false;
L->next=NULL;
// L->data=-9999;
return true;
}
LinkList list_TailInsert(LinkList &L)
{
InitList(L);
LNode *s,*r=L;
int x;
while(scanf("%d",&x))
{
if(x==-1) break;
s=(LNode *)malloc(sizeof(LNode));
s->data=x;
r->next=s;
r=s;
}
r->next=NULL;
return L;
}
bool Pattern(LinkList &A,LinkList &B)
{
LNode *p=A->next,*q=B->next,*flag=A->next;
while(p&&q)
{
if(p->data==q->data)
{
p=p->next;
q=q->next;
}
else
{
flag=flag->next;
p=flag;
q=B->next;
}
}
if(q) return false;
else return true;
}
int main()
{
LinkList A;
LinkList B;
list_TailInsert(A);
list_TailInsert(B);
printf("%d",Pattern(A,B));//bool型变量可以由%d输出
//return Pattern(A,B);
}