void change(NODE*h){
NODE *p,*q,*s,*r;
p=q=h;//p,q指向头结点
while(q->next!=NULL){
p=p->next;
q=q->next;
if(q->next!=NULL)
q=q->next;
}
q=p->next;
p->next=NULL;
while(q!=NULL){//逆置后半部分使用了头插法
r=q->next;//暂存
q->next=p->next;
p->next=q;
q=r;
}
s=h->next;//分别指向第一个元素结点
q=p->next;
p->next=NULL;//截断两部分链表
while(q!=NULL){交替合并
r=q->next;
q->next=s->next;
s->next=q;
s=q->next;
q=r;
}
}
3)三个while循环的时间复杂度为O(n),该算法的时间复杂度为O(n)