//判断B是否为A的子序列
int Match(LinkList A,LinkList B){
LinkList p=A->next,q=B->next,r=A->next;
while(p!=NULL&&q!=NULL){
if(p->data==q->data){
p=p->next;
q=q->next;
}else{
r=r->next;
p=r;
q=B->next;
}
}
if(q==NULL)return 1;
else return 0;
}
//倒数第k个元素
int Last_k(LinkList L,int k){
LinkList p=L->next;
int j=1;
while(p!=NULL&&j<k){
p=p->next;
j++;
}
if(p==NULL)return -1;
LinkList q=L->next;
while(p->next!=NULL){
p=p->next;
q=q->next;
}
return q->data;
}
//有序链表合并(合并到L1中)
void Merge1(LinkList &L1,LinkList L2){
LinkList p=L1->next,q=L2->next,pre;
while(p!=NULL&&q!=NULL){
if(p->data<=q->data){
pre=p;
p=p->next;
}else{
LinkList s=(LinkList)malloc(sizeof(LNode));
s->data=q->data;
pre->next=s;
s->next=p;
pre=s;
q=q->next;
}
}
if(q!=NULL){
pre->next=q;
}
}
//插入排序
void Sort(LinkList &L){
LinkList p=L->next,r,pre;
r=p->next;
p->next=NULL;
p=r;
while(p!=NULL){
r=p->next;
pre=L;
while(pre->next!=NULL&&pre->next->data<p->data)
pre=pre->next;
p->next=pre->next;
pre->next=p;
p=r;
}
}