链表翻转。
给出一个链表和一个数k,比如链表1→2→3→4→5→6,k=2,翻转后2→1→4→3→6→5,若k=3,翻转后3→2→1→6→5→4,若k=4,翻转后4→3→2→1→5→6,提示:这个题是链表逆置的升级变型。
代码:
pNode RotateList(pNode* pHead, DataType k)
{
pNode pPre = Find(*pHead, k);
pPre = pPre->next;
pNode pCur = *pHead;
pNode pNewNode = NULL;
pNode pCur2 = NULL;
while (pCur != pPre)
{
pNewNode = pCur;
pCur = pCur->next;
pNewNode->next = pCur2;
pCur2 = pNewNode;
}
(*pHead)->next = pPre;
return pNewNode;
}