typedef struct LNode{
int data;
struct LNode* next;
}LNode,*LinkList;
void Reverse(LinkList &L){
//断链
LinkList p=L->next,r;
L->next=NULL;
while(p!=NULL){
r=p->next;
p->next=L->next;
L->next=p;
p=r;
}
}
void InsertSort(LinkList &L){
//断链
LinkList p=L->next->next,r,pre;
L->next->next=NULL;
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;
}
}
void minDelete(LinkList &L){
LinkList p,pre,r;
while(L->next!=NULL){
pre=L;
p=L->next;
while(p->next!=NULL){
if(p->next->data<pre->next->data){
pre=p;
}
p=p->next;
}
r=pre->next;
pre->next=r->next;
free(r);
}
}
void del_a2b(LinkList &L){
LinkList p=L->next,pre=L,r;
while(p!=NULL){
if(p->data<=a&&p->data>=b){
r=p->next;
pre->next=r;
free(p);
p=r;
}else{
pre=p;
p=p->next;
}
}
}
int last_k(LinkList &L,int k){
LinkList p=L->next,q;int i=1;
while(p!=NULL&&i<k){
p=p->next;i++;
}
if(p==NULL)return -1;
q=L->next;
while(p->next!=NULL){
p=p->next;
q=q->next;
}
return q->data;
}
void match(LinkList A,LinkList B){
LinkList p=A->next,q=B->next,r=p;
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;
}
void merge(LinkList &A,LinkList B){
LinkList p=A->next,q=B->next,pre=A,s;
while(p!=NULL&&q!=NULL){
if(p->data<=q->data){
pre=p;
p=p->next;
}else{
s=(LinkList)malloc(sizeof(LNode));
s->data=q->data;
s->next=p;
pre->next=s;
pre=s;
q=q->next;
}
}
if(q!=NULL)pre->next=q;
}