要求: 给一个单链表的头结点Head和一个整数K,要求每K个结点逆转一下,并将逆转后的头结点返回给用户
分析: 为了方便操作,头结点Head是空结点,头结点后一个结点才是第一个结点。用三个结点指针new、old、temp辅助实现链表逆转。其中,结点指针new指向已完成逆转的链表的头结点,结点指针old指向未完成链表逆转的老链表的头结点,结点指针temp指向old的下一个结点,用于记录地址。K个结点逆转用K次循环实现,在每次循环中调整结点指针的指向。
代码:
Ptr ReverseLinkedList(Ptr head,int K){
Ptr new,old,temp;
int cnt=1;
new=head->Next;
old=new->Next;
while(cnt++<K){
temp=old->Next;
old->Next=new;
new=old;
old=temp;
}
/*
head->Next->Next=old;
head->Next=new;
return head;
*/
head->Next->Next=old;
return new;
}