猫吃老鼠算法

 现有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);
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值