求用链表解决约瑟夫问题简单秘诀

包括各种变题(猴子选大王,手持密码报数·······)(pascal)... 包括各种变题(猴子选大王,手持密码报数·······)(pascal) 展开
 我来答
boxeo024zgn
2011-08-23 · TA获得超过2601个赞
知道小有建树答主
回答量:870
采纳率:0%
帮助的人:520万
展开全部
struct stCircleList
{
int no;
stCircleList * pNext;
};

#define MAXSUM 100
#define THE_MVALUE 46

void xProc()
{ //以下为程序判断
// 表头指针
stCircleList* pNodeFirst = NULL, *pNodeCur = NULL;

// 构建链表数据
for ( int i = 1 ; i <= MAXSUM; i ++ )
{
stCircleList * pNewNode = new stCircleList;
// 按照顺序编号
pNewNode->no = i;
pNewNode->pNext = NULL;
if ( NULL == pNodeFirst)
pNodeFirst = pNewNode;
else
pNodeCur->pNext = pNewNode;

pNodeCur = pNewNode;
}

// 结成循环链表
pNodeCur ->pNext = pNodeFirst;

// 必须保证循环计数>0,防止死循环
// 索引从1 而不是从 0计的
VERIFY ( int ( THE_MVALUE) > 0 );

//pNodeCur = pNodeFirst;
while ( 1 )
{
for ( int i = 0 ; i < THE_MVALUE - 1; i ++ )
{
pNodeCur = pNodeCur->pNext;
}
stCircleList * pBeDelNode = pNodeCur->pNext;
pNodeCur->pNext = pBeDelNode->pNext;

delete pBeDelNode;

if ( pNodeCur == pNodeCur->pNext)
{
// 已经找到了最后一个节点,必须退出,否则异常
break;
}
}
// 当前 pNodeCur既为所求的节点
pNodeCur;
}

经过编译后为正确结果。
追问
是pascal的吗?我晕
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式