1个回答
展开全部
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;
}
经过编译后为正确结果。
{
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的吗?我晕
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询