关于单链表的反转是有一定的难度的,我说的自然是用链表来做,当然也可以用顺序表来做,不过如果加上了几个多余的结点那就很有难度了。。所以还是继续回到链表吧具体解析在代码...
我们要测试的数据可以这么考虑有尾巴不反转的,地址取到上下界的以及正好是K的整数倍需要全反转的还有就是K=N的,大链表需要反转的,还有就是K=1就都不需要反转。还有就是有多余的结点。
Ptr Reverse(Ptr head,int K)
{
new=head->next;//该链表是有头结点的,所以new指向第一个有实际意义的点
old=new->next;//old指向第二个点
cnt=1;//计数
while(cnt<K)
{
tmp=old->next;//记录第三个点不然后面的数据你就不知道了
old->next=new;//
new=old;
old=tmp;
cnt++;
}
head->next->nexr=old;//相当于把第一个有实际意思的结点给了后面的一个结点
}