将一段链表分段并逆转连接:
Node* Option(Node* L,int K,int Size){
int i=0;
Node* List[Size/K+1];
int cnt=0;
Node* t1;
int j;
int flag=0;
Node* tr;
t1=L->link;
List[0]=L->link;
while(t1->link){
t1=t1->link;
cnt++;
if(cnt==K-1&&t1->link!=NULL){
i++;
List[i]=t1->link;
t1->link=NULL;
t1=List[i];
cnt=0;
}
if(cnt==K-1&&t1->link==NULL)
flag=1;
}
if(flag!=1){
for(j=0;j<=i-1;j++){
List[j]=Invert(List[j]);
}}
else
{
for(j=0;j<=i;j++){
List[j]=Invert(List[j]);
}
}
j=0;
tr=List[0];
while(j!=i){
tr=tr->link;
if(tr->link==NULL){
j++;
tr->link=List[j];
}
}
L->link=List[0];
return L;
}