现有n个老鼠围成一圆圈,有一只猫从任意位置开始吃老鼠,每次都隔一个老鼠吃,请给出最后一个老鼠的编号?题目要求是任给老鼠数n,输出猫最后吃的老鼠的编号。
struct node
{
node* pPre;
int nNum;
node* pNext;
};
node* createLink(int nCount)
{
node* pFirst = new node;
node* pCur = pFirst;
pCur->nNum = 1;
pCur->pNext = NULL;
pCur->pPre = NULL;
for(int i=1 ; i<nCount ; i++)
{
node* pNext = new node;
pCur->pNext = pNext;
pNext->pPre = pCur;
pCur = pNext;
pCur->nNum = i+1;
}
pCur->pNext = pFirst;
pFirst->pPre = pCur;
return pFirst;
}
int deletnode(node* pNode)
{
node* pPre = pNode->pPre;
node* pNext = pNode->pNext;
node* pCur = pNode;
pPre->pNext = pNext;
pNext->pPre = pPre;
if(pNext->pNext == pCur)
{
return pCur->pNext->nNum;
}
delete pCur;
int nNum = deletnode(pNext->pNext);
return nNum;
}
void main()
{
node* pNode = createLink(4);
int nNum = deletnode(pNode);
}